php - 发送 PHP 电子邮件

标签 php email

我写了一个脚本,如果表单失败,用户会看到一条错误消息,并且应该向我发送一封电子邮件。但是,我没有收到电子邮件。我在我的脚本中没有看到任何错误,也找不到电子邮件(甚至在垃圾邮件中也找不到)。可能是什么问题?我相信我们在 Linux 服务器上工作,所以默认情况下应该安装邮件代理,对吧?防火墙会阻止消息吗?

代码:

<?php

if (isset($aErrors) && count($aErrors) > 0 ) {
        print '<ul class="errorlist">';
        foreach ( $aErrors as $error ) {
          print '<li>' . $error . '</li>';
        }
        print '</ul><br />';


$mail_ontv = "info@example.com"; 

$_POST['onderwerp'] = "Geen Twinfield Abonnement";

    // set datum 
    $datum = date("d.m.Y H:i"); 

    // set ip 
    $ip = $_SERVER['REMOTE_ADDR']; 

    $inhoud_mail .= $_SERVER['SCRIPT_URI'] . "\n\n";

    $inhoud_mail .= "Iemand probeerde zich aan te melden, maar had geen Twinfield abonnement!\n";   
    $inhoud_mail .= "Bedrijfsnaam: " . $_SESSION['bedrijfsnaam'] . "\n"; 
    $inhoud_mail .= "Telefoonnummer: " . $_SESSION['telefoonnummer'] . "\n"; 
    $inhoud_mail .= "E-mail adres: " . $_SESSION['email'] . "\n"; 
    $inhoud_mail .= "Telefoonnummer contactpersoon: " . $_SESSION['telefoonnummercontact'] . "\n"; 
    $inhoud_mail .= "E-mail adres contactpersoon: " . $_SESSION['emailcontact'] . "\n"; 
    $inhoud_mail .= "Gewenste gebruikersnaam: " . $_SESSION['gebruikersnaam'] . "\n";
    $inhoud_mail .= "Gekozen abonnement: " . $_SESSION['abonnement'] . "\n\n"; 

    $inhoud_mail .= "Verstuurd op " . $datum . " via het ip " . $ip . "\n\n"; 

    $headers = "From: " . $_SESSION['bedrijfsnaam'] . " <" . $_SESSION['emailcontact'] . ">";

    $headers = stripslashes($headers);
    $headers = str_replace("\n", "", $headers); // Verwijder \n 
    $headers = str_replace("\r", "", $headers); // Verwijder \r 
    $headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes 

    $_POST['onderwerp'] = str_replace("\n", "", $_POST['onderwerp']); // Verwijder \n 
    $_POST['onderwerp'] = str_replace("\r", "", $_POST['onderwerp']); // Verwijder \r 
    $_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes 

    mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers);                                      
}

?>

谢谢大家!

最佳答案

除了 Mac B 的建议之外,还有一些额外的想法:

1) 有许多 PHP 库可以为您发送电子邮件。它们可以与本地或远程 SMTP 服务器一起工作。例如,http://swiftmailer.org/ .

2) 如今大多数电子邮件提供商(Gmail、Yahoo 等)都会拦截来自您本地计算机的垃圾邮件。我建议使用便宜的第三方 SMTP 服务来发送您的电子邮件 - 这将有助于提高可靠性。我多年来一直使用的一个工具叫做 CritSend (critsend.com)。还有很多其他的。

关于php - 发送 PHP 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11694587/

相关文章:

ruby-on-rails - 如何使用rails通过postfix邮件服务器发送邮件?

email - Reply-To Amazon SES 字段被自动回复器忽略

iphone - iPhone 的邮件发送框架

php - 向 Laravel 队列中的 Sentry 发送错误报告

PHP:通过引用实例化类?

javascript - 使用 XMLHttpRequest 和 FileList 发布本地文件

php - 在mysql上查询数据后制作PHP页面

Python 电子邮件 - 8 位 MIME 支持

php - 用 php 清理 JSON

ios - 如何从iOS应用通过邮件将.mov记录器文件发送为附件