【问题标题】:Replacement for PHP mail() method?替换 PHP mail() 方法?
【发布时间】:2016-03-29 02:00:09
【问题描述】:

我正在尝试在(共享)网络托管帐户上设置网站。我遇到了 mail() 方法的问题。该网站有一个联系表单,用户可以在其中提交反馈:

Name: _____________
Email: ____________
Message: __________

所以我使用 mail() 方法将其作为电子邮件发送到我自己的帐户:

if(mail("mysitecustomerfeedback@hotmail.com", 
    "Customer message", 
    $message,
    "From: $name <$email>\r\n".
    "Reply-To: $name <$email>\r\n".
    "X-Mailer: PHP/".phpversion()) === true)
{
    $messageWasSent = true;
}

所以当我尝试它时,电子邮件已发送,但它有几个问题。

例如,在我的测试中,我提供了我的实际电子邮件,例如 johndoe@hotmail.com,但是当我的 mysitecustomerfeedback@hotmail.com Hotmail 帐户收到电子邮件时,from 电子邮件字段将填写共享上的默认电子邮件托管服务器,或者像 web-user234@server875.web-hosting.com 而不是 johndoe@hotmail.com 之类的东西,就像我期望的那样。

此外,Hotmail 会自动将电子邮件放入垃圾邮件中,即使它不包含附件、图像或任何内容。这是一条纯文本消息。

截图如下:

所以我知道这家共享托管公司不希望我使用 mail() 方法发送垃圾邮件,但我还能如何从我的网站发送这些电子邮件? mail()有替代方法吗?

【问题讨论】:

  • 您不能从自己的 Hotmail 帐户发送邮件,因为几乎所有电子邮件提供商都使用一个系统来防止从非白名单地址发送的电子邮件
  • 您可以使用电子邮件服务,例如sendgrid.com
  • @Tchoupi:谢谢。 SendGrid 听起来很不错。用过吗,靠谱吗?只要今年不搞像Mandrill did这样的恶作剧,我就可以了。
  • @c00000fd API简单易用,服务非常可靠。我将它用于几个项目,我喜欢它。
  • @Tchoupi:很高兴知道这一点。谢谢。不过我很好奇,他们有一个免费帐户和 9.95 美元/月的帐户,但是当我检查规格时,除了每月的电子邮件数量外,它们往往是相同的:sendgrid.com/marketing/mandrill-alternative 我读对了吗?

标签: php apache email


【解决方案1】:

您可以使用PHPMailer

例子:

$mail = new PHPMailer;
$mail->isSMTP();

// You can use the SMTP host/auth details
// supplied by your personal email provider.
$mail->SMTPAuth = true;
$mail->Host = 'smtp.example.com';
$mail->Username = 'myUsername';
$mail->Password = 'myPassword';

$mail->setFrom('my@example.com');
$mail->addAddress('to@example.com');

$mail->Subject = 'A subject.';
$mail->Body = 'A message.';

$mail->send();

由于您使用 hotmail/gmail 或您使用的任何电子邮件服务器进行身份验证,收件人将收到电子邮件,就像您使用您最喜欢的电子邮件客户端(这是一个 PHP 电子邮件客户端)发送它一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多