phpmailer发送没有主题的邮件,没有换行符

时间:2016-06-04 14:10:01

标签: php phpmailer php-7

我使用php curl()函数从服务器A连接到邮件服务器B来发送邮件。

$body = "body\n\nmore body\nmore body\n\nmore body\n\n";


$post = [
    'sendera' => $sender,
    'sender_name' => $sender_name,
    'subject'   => $subject,
    'body'   => $body,
    'recipient'   => $email,
    'recipient_name' => $name,
    'replyto' => $replyto
];

$ch = curl_init('http://example-mailserver.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($ch,CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
curl_close($ch);

邮件已成功发送,但有2个问题。

问题N 1

邮件到达没有换行符,因此,所有\ n只是纯文本。从来没有遇到此问题从同一台服务器发送邮件。现在,当我使用 curl()发送时,会出现此问题。邮件服务器已安装 php7 。这应该是 php7 还是 curl()问题?

问题N 2

邮件在没有主题行的情况下到达,但是当脚本运行时存在 $ subject 变量,我在调用PHPMailer()函数之前通过发送一个更简单的邮件来检查它。

那么,为什么PHPMailer会忽略 $ subject?我从来没有在php5的服务器A上遇到过这个问题。

mail('my@email', 'check if subject exists', $subject);

上面的邮件以$ subject变量到达。但是之后用phpmailer发送的邮件没有主题行。

$mail=new PHPMailer();
$mail->IsMail();
$mail->WordWrap   = 0; 
$mail->SingleTo = true;
$mail->IsHTML(false);
$mail->CharSet    = "utf-8";

$mail->From       = $sender;
$mail->FromName   = $sender_name;
$mail->Subject    = $subject;
$mail->Body       = $body;

$mail->AddAddress($recipient,$recipient_name);
$mail->AddReplyTo(#replyt,"No-Reply");

2 个答案:

答案 0 :(得分:1)

问题没有。 1可能是由于您正在使用的换行符。 \n只是完整换行符的两个元素之一,它是一个新行'。某些邮件系统/服务器需要完整的换行符, \r\n \r在这种情况下是“回车”,第二个元素全线休息。

问题没有。 2 ...首先关闭:$subject中的内容是什么?

答案 1 :(得分:0)

主题问题

我安装了最新版本的phpmailer,而不是我有主题。

换行

我用单引号 $ body

mData.get(holder.position)

我将其更改为:

body = 'this is body\r\n\r\nmore body';

现在一切都好。