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

时间:2015-04-01 02:38:41

标签: php function email smtp fsockopen

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

最近我决定尝试修复计算机实验室用来发送电子邮件的代码。它曾经工作,直到他们最近试图更改发送电子邮件地址。我的问题?我对这种类型的编码以及他们改变了哪些代码知之甚少。我找到了他们用来发送邮件的功能。我希望有人可以帮我指出问题所在。或者我可以改变它以使其工作。我在想它是因为永远不会要求输入密码。但我不明白编写此代码的人究竟在做什么。

这是我正在查看的代码。

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";

是否有人能够指出我正确的方向。或者有人可以解释如何使程序输出错误信息?我已经google了一下,找到了谈论它的话题,但我还是迷路了。因为我是新手,所以只编写新代码甚至不尝试修复它会更好吗?任何帮助都非常感谢,因为我在这类代码中是一个小小的新手。我可以阅读并理解它,但是...我不理解深度函数。

1 个答案:

答案 0 :(得分:0)

重写SendMail函数内容并使用PHPMailer类而不是手动套接字交互可能更容易。它可以以不同的方式发送电子邮件 - mail()函数,sendmail或SMTP。它易于配置,并且在SMTP会话期间出现错误时会抛出异常。只需将它放在您网站的某个位置,然后查看随包提供的示例。