替换PHP mail()方法?

替换PHP mail()方法?,php,apache,email,Php,Apache,Email,我正在尝试在一个(共享的)web托管帐户上设置一个网站。我面临着mail()方法的问题。该网站有一个联系表单,用户可以在其中提交反馈: Name: _____________ Email: ____________ Message: __________ 因此,我使用mail()方法将其作为电子邮件发送到我自己的帐户: if(mail("mysitecustomerfeedback@hotmail.com", "Customer message", $message,

我正在尝试在一个(共享的)web托管帐户上设置一个网站。我面临着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;
}
if(邮件)mysitecustomerfeedback@hotmail.com", 
“客户信息”,
$message,
“发件人:$name\r\n”。
“答复:$name\r\n”。
“X-Mailer:PHP/”.phpversion())==true)
{
$messageWasSent=true;
}
因此,当我尝试它时,电子邮件被发送,但它有几个问题

例如,在我的测试中,我提供了我的实际电子邮件,比如,
johndoe@hotmail.com
但是当我的
mysitecustomerfeedback@hotmail.com
Hotmail帐户,共享托管服务器上的
from
email字段用默认电子邮件填写,或者类似
web的东西-user234@server875.web-hosting.com
和not
johndoe@hotmail.com
正如我所期望的那样

此外,Hotmail会自动将该电子邮件放入垃圾邮件,即使它不包含任何附件、图像或任何内容。这是一条普通的短信

以下是一个屏幕截图:

所以我知道这家共享主机公司不希望我使用mail()方法发送垃圾邮件,但我如何才能在我的网站上发送这些电子邮件呢?mail()是否有替换方法?

您可以使用

例如:

$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电子邮件客户端)发送电子邮件一样.

您不能从自己的Hotmail帐户发送电子邮件,因为几乎所有电子邮件提供商都使用一个系统来防止来自非白名单地址的电子邮件。您可以使用电子邮件服务,如@Tchoupi:Thank。SendGrid听起来真不错。你用过吗,它有多可靠?只要它今年不做任何类似的恶作剧,我会很好地使用它。@c0000fd该API使用方便,服务非常可靠。我在一些项目中使用过它,我喜欢它。@Tchoupi:很高兴知道这一点。谢谢不过我很好奇,他们有一个免费的账户和一个9.95美元/月的账户,但当我检查规格时,除了每个月的电子邮件数量外,他们往往是一样的:我读对了吗?