【发布时间】:2014-11-18 16:03:58
【问题描述】:
我正在使用链接到我的 gmail 帐户的 PHPMailer。
我需要自动加载器,创建了一个处理发送邮件的函数,然后触发该函数进行测试。一切看起来像这样:
require "PHPMailer/PHPMailerAutoload.php";
function sendMail($to, $subject, $body, $from){
//init PHPMailer
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Port = 587;
$mail->isHTML(true);
//connection settings
$mail->Host = "smtp.gmail.com";
$mail->Username = "xxx@xxx.com";
$mail->Password = "xxxxxxxx";
//addresses
$mail->addAddress($to);
$mail->setFrom($from);
//create email
$mail->Subject = $subject;
$mail->Body = $body;
//send email
$mail->send();
}
//sendMail(to, subject, body, from)
sendMail("xxxx@xxxxx.com", "Test Subject", "Test body", "xxxxx@xxxxx.com");
这会将带有正确主题和正文的电子邮件发送到正确的位置,但它会忽略“发件人”地址,并且电子邮件始终表示它来自传递电子邮件的 gmail 帐户。反正有没有配置这个工作?
请注意,我显然在上面的代码中省略了正确的帐户详细信息和真实的往返地址。
【问题讨论】:
-
我发誓我不是个混蛋但是,你真的需要phpMailer吗?我问这个是因为 PHP 有一个内置的 mail() 函数,它可以很好地工作 if 你不需要附件等等。它有局限性,如 phpmailers 文档中所述,但如果您不需要手提钻来杀死苍蝇,为什么要使用它呢? (我显然假设它是一只小苍蝇)
-
@MoshMage 我正在使用 Microsoft Azure 服务器。 PHP mail() 不起作用。这就是在这里使用 SMTP 的全部意义所在。
-
糟了。让我尝试阅读他们的文档并检查是否可以提供帮助
-
@MoshMage 直接调用
mail()是一个真的坏主意 - 绝大多数示例代码都是错误的、不完整的或容易受到攻击。例如 all PHP 文档页面上的代码示例容易受到标头注入的影响,并且无法正确编码标头和正文。 -
@Synchro 从来没有想过你可以注入
mail()(主要是因为我从未想过自己这样做)但奇怪的是我总是确保“发件人”是只是一封电子邮件(如,正则表达式输入并匹配电子邮件表单);这意味着虽然它可以注射,但并不难预防。但!很高兴知道这种暴行以防止将来发生。谢谢。
标签: php email smtp gmail phpmailer