使用gmailSMTP发送邮件(修复某人的代码)


Sending mail with gmail SMTP (Fixing someone's code)

这可能很长,所以我很抱歉。

最近,我决定尝试修复一个计算机实验室用来发送电子邮件的代码。在他们最近尝试更改发送电子邮件地址之前,它一直有效。我的问题?我对这种类型的编码以及它们更改了哪些代码知之甚少。我找到了他们用来发送邮件的功能。我希望有人能帮我指出问题出在哪里。或者我可以改变什么来让它发挥作用。我想这是因为从来没有人要求输入密码。但我不明白写这段代码的人到底在做什么。

这是我正在查看的代码。

function SendMail($ToName, $ToEmail, $FromName, $FromEmail, $Subject, $Body, $Header)
{
$SMTP = fsockopen("smtp.gmail.com", 465);
$InputBuffer = fgets($SMTP, 1024);
fputs($SMTP, "HELO $smtp.gmail.com'n");
$InputBuffer = fgets($SMTP, 1024);
fputs($SMTP, "MAIL From: $FromEmail'n");
$InputBuffer = fgets($SMTP, 1024);
fputs($SMTP, "RCPT To: $ToEmail'n");
$InputBuffer = fgets($SMTP, 1024);
fputs($SMTP, "DATA'n");
$InputBuffer = fgets($SMTP, 1024);
fputs($SMTP, "$Header");
fputs($SMTP, "From: $FromName <$FromEmail>'n");
fputs($SMTP, "To: $ToName <$ToEmail>'n");
fputs($SMTP, "Subject: $Subject'n'n");
fputs($SMTP, "$Body'r'n.'r'n");
fputs($SMTP, "QUIT'n");
$InputBuffer = fgets($SMTP, 1024);
fclose($SMTP);
} 

他们按下一个按钮,它就会发送电子邮件。或者至少运行函数。我发现当他们按下按钮时,会调用某些变量。其他变量是从存储个人信息的数据库中调用的。(将电子邮件更改为随机邮件以发布此问题。)

$fname = mysql_result($results, 0, "fname");
$FromName = "Support Center";
$FromEmail = "JonStevens93@hotmail.com";
$Subject = "Computer Finished";
$Body = "Your computer is fixed.";
$Header = "Computer";

有谁能为我指明正确的方向吗。或者有人能解释一下如何让程序输出错误消息吗?我在谷歌上搜索了很多关于它的话题,但我还是迷路了。既然我是新手,就写一个新代码,甚至不尝试修复它会更好吗?任何帮助都是非常感谢的,因为我是这类代码的新手。我可以阅读并理解它,但是。。。我不了解深度函数。

只需重写SendMail函数内容并使用PHPMailer类而不是手动套接字交互可能会更容易。它可以通过不同的方式发送电子邮件-mail()功能、sendmail或SMTP。它很容易配置,并且在SMTP会话期间出现错误时会引发异常。只要把它放在你的网站上的某个地方,看看随包提供的例子。