我们有一个自定义的php电子邮件营销应用程序,还有一个有趣的问题:如果邮件的主题行包含带重音的单词,它会"吞下"它与下一个单词之间的空格.一个例子:短语
ÁngelRíosescuchay sorprende
显示(至少通过gmail和lotus notes)
ÁngelRíosescuchay sorprende
消息源中的特定行显示:
Subject: =?ISO-8859-1?Q?=C1ngel?= =?ISO-8859-1?Q?R=EDos?= escucha y sorprende
(半满标头):
Delivered-To: me@gmail.com
Received: {elided}
Return-Path: <return@path>
Received: {elided}
Received: (qmail 23734 invoked by uid 48); 18 Aug 2009 13:51:14 -0000
Date: 18 Aug 2009 13:51:14 -0000
To: "Adriano" <me@gmail.com>
Subject: =?ISO-8859-1?Q?=C1ngel?= =?ISO-8859-1?Q?R=EDos?= escucha y sorprende
MIME-Version: 1.0
From: {elided}
X-Mailer: PHP
X-Lista: 1290
X-ID: 48163
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Message-ID: <kokrte.rpq06m@example.com>
Run Code Online (Sandbox Code Playgroud)
编辑:
该应用程序使用旧版本的Html Mime Mail来准备消息,我将尝试升级到更新的版本.无论如何,这是编码主题的函数:
/**
* Function to encode a header if necessary …
Run Code Online (Sandbox Code Playgroud) 我正在尝试发送带有希伯来语内容/主题的电子邮件,如下所示:
$to = 'email@email.com';
$subject = "???? ??? ??? ????";
$message = '??? ??? ???';
$headers = 'From: email@email.com' . "\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($to, $subject, $message, $headers);
Run Code Online (Sandbox Code Playgroud)
但是我在这个主题中得到的更多是克林贡语而不是现代希伯来语。消息本身很好,只是主题搞砸了。
我能做什么?(我对你的任何黑客攻击持开放态度)
我正在使用Zend_Mail并想要自定义发件人名称.
我希望发件人姓名是FooBar爱你Ryan(其中'Ryan'被收件人姓名取代,爱你被收件人的语言替换为'loves'的翻译,就像CD Baby一样).
我试过base64_encode和mb_encode_mimeheader()以及其他类似的东西:
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
iconv_set_encoding("input_encoding", 'UTF-8');
iconv_set_encoding("output_encoding", 'UTF-8');
iconv_set_encoding("internal_encoding", 'UTF-8');
header('Content-Type:text/html; charset=' . 'UTF-8');
Run Code Online (Sandbox Code Playgroud)
它生成此作为发件人: '=?UTF-8?B?RXh0cmFidXjniLHkvaByY3dhbHNoQGV4dHJhYnV4LmNvbQ==?= <email@example.com>'
然后它出现在我的Gmail中(unknown sender)
.
有任何想法吗?
我正在尝试将→(右箭头→
或unicode 2192 hex)编码为电子邮件主题行.
当我使用php时,当我使用mb_encode_mimeheader()
Thunderbird或Gmail做同样的事情时,我会得到不同的价值.但是当php生成的电子邮件到达时,角色没有正确显示.此外,PHP mb_decode_mimeheader()
可以处理PHP的输出,但不能解码来自其他电子邮件源的内容.
通过十六进制转储,我已经确定了箭头的UTF-8表示
<?php
$rarr = "\xe2\x86\x92";
mb_encode_mimeheader($rarr, 'UTF-8'); // =?UTF-8?B?w6LChsKS?=
// whereas Tbird and Gmail produce: =?UTF-8?B?4oaS?=
// and more manually:
'=?UTF-8?B?' . base64_encode($rarr).'?='; // =?UTF-8?B?4oaS?=
Run Code Online (Sandbox Code Playgroud)
PHP的编码在Thunderbird和Gmail中出现为:â
我对PHP的行为感到困惑,因为它似乎没有产生标准结果.
如何让PHP编码UTF-8电子邮件头值,以便邮件客户端正确解码?
我正在使用 PHPMailer 并尝试发送带有阿拉伯语文本的电子邮件,它正在发送空主题,我可以在我的收件箱中看到“(无主题)”
我正在使用以下内容:
HTML代码
<form action="mail.php" method="post">
<input type="text" name="subject" />
<input type="submit" value="Send" />
</form>
Run Code Online (Sandbox Code Playgroud)
PHP 代码 (mail.php)
$subject = $_POST["subject"];
$mailer = new PHPMailer();
$mailer->CharSet = 'UTF-8';
$mailer->IsSMTP();
$mailer->SMTPDebug = 1;
$mailer->SMTPAuth = true;
// Prepare Message
$mailer->Subject = ($subject);
$emails = 0;
Run Code Online (Sandbox Code Playgroud)
帮助将不胜感激:)
我正在使用PHPMailer
API发送电子邮件.我想知道如何用阿拉伯语(非英语)语言发送主题
$mail->CharSet = 'utf-8';
$array= FetchTable('cos');
$subject = $_POST['subject'];
$body = $_POST['body'];
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "host";
$mail->SMTPAuth = true;
$mail->Username = "yaz@enfaltourism.com";
$mail->Password = "*******";
$mail->Port = "587";
$mail->From = "yaz@enfaltourism.com";
$mail->FromName = "Enfaltourism";
$mail->Subject = $subject;
$mail->AddAddress($email);
$mail->Send();`
Run Code Online (Sandbox Code Playgroud)
电子邮件已成功发送,但问题在于使用阿拉伯语发送主题.在设置字符编码后,电子邮件正文以阿拉伯语正确显示,但主题以奇怪的字符显示
更新
include("../mail/class.phpmailer.php");
$array= FetchTable('cos');
$subject = $_POST['subject'];
$body = $_POST['body'];
$mail = new PHPMailer();
$mail->CharSet = 'utf-8';
$mail->IsSMTP();
$mail->Host = "mail.enfaltourism.com";
$mail->SMTPAuth = true;
$mail->Username = "yaz@enfaltourism.com";
$mail->Password = "*****";
$mail->Port = "587";
$mail->From …
Run Code Online (Sandbox Code Playgroud)