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

phpmailer发送没有主题和换行符的邮件,php,phpmailer,php-7,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' =&g

我使用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服务器上从来没有遇到过这个问题

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");

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


问题2…首先:你的主题问题中有什么

我安装了最新版本的phpmailer,但我没有这个主题

换行符

我在单引号中有$body

body = 'this is body\r\n\r\nmore body';
我将此更改为:

$body = "this is body\r\n\r\nmore body";

现在一切都好了。

$mail->Subject=“”.$subjects。”;//请尝试同样的问题:(您是否尝试过

而不是$subject是:Confirmar la claircud de cambio de contraseña\r\n没有帮助,同样的问题-当您使用重音符号“áíóú”或特殊字符(如“ñ”)时,纯文本有时会失败。具体取决于机器、配置和php配置。