我試圖在mail()提交表單時發送一封帶有 PHP函式的電子郵件。不包括 GMAIL,電子郵件將成為垃圾郵件/垃圾郵件,我嘗試過 yahoo 和 Outlook 作為其他電子郵件服務提供商。
我知道還有其他解決方案,例如 PHP 郵件程式或使用 SendGrid 或 Mailgun 等第三方服務發送電子郵件,但我想知道是否有其他方法可以繞過其他電子郵件提供商的垃圾郵件過濾器,例如我目前正在繞過郵箱。
郵件.php
<?php
function autoResponderEmail($name, $email) {
$subject = "Thank you for submitting the form";
$from = "[email protected]";
$organization = "Organization Name Here";
$message = "Thank you " . $name ." for contacting us. We will be in touch with you shortly." . "\n\n" . "Regards,\n" . $organization . " Team";
$headers .= "Reply-To: ".$organization." <".$from.">\r\n";
$headers .= "Return-Path: ".$organization." <".$from.">\r\n";
$headers .= "From: ".$organization." <".$from.">\r\n";
$headers .= "Organization: ".$organization."\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-Mailer: PHP". phpversion() ."\r\n" ;
$sendMail = mail($email, $subject, $message, $headers);
if ($sendMail) {
header('Location: ./index.html');
} else {
alert('Failed to send email');
}
}
if(isset($_POST['submit'])){
$to = "[email protected]";
$organization = "Organization Name Here";
$full_name = $_POST['full_name'];
$from = $_POST['email_address'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$detail .= "Name: " . $full_name . "\r\n";
$detail .= "Email: " . $from . "\r\n";
$detail .= "Phone: " . $phone . "\r\n";
$detail .= "Subject: New Contact Inquiry" . "\r\n";
$detail .= "Organization: " . $organization . "\r\n";
$detail .= "Message: " . $message . "\r\n";
$headers .= "Reply-To: ".$organization." <".$to.">\r\n";
$headers .= "Return-Path: ".$organization." <".$to.">\r\n";
$headers .= 'Cc: [email protected]' . "\r\n";;
$headers .= "From: ".$organization." <".$to.">\r\n";
$headers .= "Organization: ".$organization."\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-Mailer: PHP". phpversion() ."\r\n" ;
$sendMail = mail($to, $subject, $detail, $headers);
if ($sendMail) {
autoResponderEmail($full_name, $from);
} else {
alert('Failed to send email');
}
};
?>
uj5u.com熱心網友回復:
不。如果有辦法繞過垃圾郵件過濾器,它們就不會是垃圾郵件過濾器。
查看已放入垃圾郵件的已接收郵件的原始來源。大多數電子郵件提供商會添加標題,解釋它如何以及為什么最終成為垃圾郵件。
您在此代碼中做錯了很多事情,很可能會將其標記為垃圾郵件:
您正在設定回傳路徑標頭。這違反了 RFC,因為這是接收方的作業。如果要設定信封發件人,請使用引數中的-f選項additional_params為mail()。
您沒有在此處進行任何 DKIM 簽名。可能是您的本地郵件服務器正在為您執行此操作,但如果您不是,這可能是一個原因。
在您的第二個示例中,您正在偽造發件人地址,這幾乎總是將您的郵件標記為垃圾郵件。如果您希望能夠回復提交者的地址,請使用您自己的(非偽造的)地址作為發件人地址,并將提交者的地址添加為回復地址。
您的腳本容易受到標頭注入攻擊。
您沒有對訊息正文進行任何處理,并且它包含用戶提供的內容,因此很可能導致訊息編碼不正確,這可能構成漏洞,尤其是與可能導致可注入附件的標頭注入結合使用時。
這就是人們使用像 PHPMailer 這樣的庫來幫助您避免所有這些問題的原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/372541.html
上一篇:如何創建具有相同模型、顏色、字體和偵聽器的JTable副本?
下一篇:為DKIM簽名生成EML檔案
