簡體   English   中英

PHP的發件人郵件

[英]sender mail with php

我使用此代碼發送郵件。 但是當我在$ body中添加$ headers和lines時,它停止工作。 誰能支持我找到一個或多個錯誤?

感謝您的支持。

<?PHP

// Email Address
$youremail = 'correo@correo.com';
$memberemail = $_POST['email'];

// Register Form
if ( isset($_POST['email']) && isset($_POST['name']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {

    // Detect & Prevent Header Injections
    $test = "/(content-type|bcc:|cc:|to:)/i";
    foreach ( $_POST as $key => $val ) {
        if ( preg_match( $test, $val ) ) {
            exit;
        }
    }

    // Email Format
    $body  =    "Hola! $_POST[name]. Gracias por solicitar tu inscripción. \n";
    $body .=    "Analizaremos tú solicitud y en caso de resultar positiva recibirás un correo de confirmación en las próximas 24 horas. \n\n";
    $body .=    "Tus datos de solicitud son: \r\n"
    $body .=    "============================ \r\n";
    $body .=    "Nombre:  $_POST[name] \n";
    $body .=    "eMail:  $_POST[email] \n";
    $body .=    "Empresa:  $_POST[telephone] \n";
    $body .=    "Sector:  $_POST[ticket] \n\n";
    $body .=    "Atentamente, \n";
    $body .=    "Staff \n\n";
    $body .=    "NOTA: Para culaquier duda sobre tu proceso de inscripción te recomendamos leer las preguntas frecuentes en el sito web del evento http://www.evento.com";

    //Send email

    $headers = "From: Staff <contacto@evento.com>" . "\r\n" . "Bcc: admin@evento.com" . "\r\n";

    mail( "To:" . $memberemail , "Nuevo registro", $body, "From:" . $headers);

}

// Subscribe Form
if( isset($_POST['subscriber']) && filter_var($_POST['subscriber'], FILTER_VALIDATE_EMAIL) ) {
    $data = $_POST['subscriber'] . ";" . "\n";
    $ret = file_put_contents('subscribers.txt', $data, FILE_APPEND | LOCK_EX);
    if($ret === false) {
        die('Ouch! Al parecer hay un error.');
    }
} else {
    die('No se pueden enviar los datos.');
}

?>

更改$body, "From:" . $headers) $body, "From:" . $headers)$body, $headers)

您已經有From:

$headers = "From: Staff <contacto@evento.com>"...

加上注釋中指出的內容,更改並刪除"To:" .

mail( "To:" . $memberemail , "Nuevo registro", $body, "From:" . $headers);

mail($memberemail, "Nuevo registro", $body, $headers);

郵件自動將第一個參數設置為收件人To:

但是,您可能希望將$youremail作為第一個參數,將$memberemail作為From: $memberemail因為郵件將發送給發送電子郵件的人,但是我會讓您決定。

查閱手冊:


編輯:

在測試您的代碼之前,以下行( 我忽略了 )中缺少分號:

body .=    "Tus datos de solicitud son: \r\n"
                                             ^ missing semi-colon

添加它

body .=    "Tus datos de solicitud son: \r\n";

如果設置了錯誤報告,您將看到以下解析/語法錯誤:

解析錯誤:語法錯誤,/ server / path / file.php中行(數字)意外出現“ $ body”(T_VARIABLE)

當PHP在行號上發出解析錯誤信號時,通常是在該行“之前”,而不是實際的行號本身。

  • 如果您在第22行看到解析錯誤,則故障很可能是在第21行而不是第22行。

錯誤報告添加到文件頂部,這將有助於發現錯誤。

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:錯誤報告僅應在登台進行,而不應在生產過程中進行。

我認為這與以下方面有關:

  1. 在evento.com域上設置SPF記錄,以允許該IP或子網使用此發件人地址。 您可以使用這樣的工具: http : //www.spfwizard.net/
  2. 在event.com域上添加指向發送主機IP的PTR記錄
  3. 刪除整個正文,然后嘗試逐行添加(確保基於內容的垃圾郵件過濾器無效)
  4. 觀察您的郵件日志,查看它是否由MTA發送,以及您的smarthost響應代碼。

您應該指定“停止工作”的確切含義:它是從服務器發送的嗎? 它落入垃圾箱了嗎? 它被您的smarthost拒絕了嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM