替换PHP mail()方法?

时间:2016-03-28 17:52:14

标签: php apache email

我试图在(共享)网络托管帐户上设置网站。我遇到了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自动放入垃圾邮件,即使它没有附件,图片或任何内容。这是一条纯文本信息。

这是一个截图:

enter image description here

所以我理解这个共享托管公司并不希望我使用mail()方法发送垃圾邮件,但我怎样才能将这些电子邮件发送到我的网站上?是否有mail()的替换方法?

1 个答案:

答案 0 :(得分:0)

您可以使用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电子邮件客户端)发送的那样。