我在我的网站上设置了一个简单的表单来测试使用PHP发送电子邮件。
表单将三个文本字段的输入发布到email-form-process.php,如下所示:
<?php
$email = $_POST['email'];
$subject = "Test Email Worked";
$msg = $_POST['comment'];
mail ('$email','$subject','$msg');
header('Location: email-form-confirm.php');
exit();
?>
我在测试中回应了三个输入,以确保email-form-process.php从表单中接收它们。
我遇到的问题是我的任何电子邮件都没有收到该电子邮件。我已经测试了它发送到@ live.com电子邮件以及由domains.live.com托管的两个自定义域。
我使用domains.live.com来托管我网站的所有电子邮件。我通过我的主机MediaTemple设置了我的DNS记录,用于domains.live.com来处理我的电子邮件。这对于常规电子邮件非常有用,但我不确定使用domains.live.com托管的自定义域电子邮件在PHP中发送电子邮件的最佳方式。
当我的域由MediaTemple托管且我的电子邮件由domains.live.com托管时,如何通过PHP从me@mydomain.com发送电子邮件?
我还没有尝试过使用SMTP方法。在以下链接中找到的解决方案对我来说是一个好方向吗? http://www.9lessons.info/2009/10/send-mail-using-smtp-and-php.html
提前感谢您提供任何帮助!
-Mark
答案 0 :(得分:4)
如果您在其他地方托管邮件,则需要为您的服务器禁用本地邮件。
http://kb.mediatemple.net/questions/519/How+to+enable+or+disable+local+mail+for+your+server%3F
答案 1 :(得分:0)
由于Live正在托管您的电子邮件,因此可能会阻止/将收到的电子邮件立即发送到垃圾邮件文件夹。您的Web服务器具有与live的电子邮件服务器不同的IP,因此它可能认为它正在发送伪造的电子邮件。
您可能还想查看sendgrid;他们将您的服务器IP放在白名单上,您的电子邮件肯定会通过。
希望这有帮助!
答案 2 :(得分:0)
您可以使用像PHPMailer这样的东西,这样可以更容易地使用SMTP邮件。无论如何,这绝对是一个更好的解决方案,而不是在PHP中使用内置的mail命令,因为PHPMailer可以为您提供更好的附件处理,收件人处理等,而无需编写您自己的标头以通过邮件功能发送。
您也可以从MediaTemple的服务器发送,只需将主机名设置为您的域。它不必匹配MX记录,尽管垃圾邮件过滤器会注意到这一点,因此您需要至少为SenderID和SPF配置域,以便将MediaTemple主机视为您域的有效电子邮件发件人。