我通过IMAP从Gmail中的电子邮件中获取messageid.
这段代码:
messageid = m.fetch(num, '(BODY[HEADER.FIELDS (MESSAGE-ID)])')
print messageid
Run Code Online (Sandbox Code Playgroud)
返回:
[('1 (BODY[HEADER.FIELDS (MESSAGE-ID)] {78}', 'Message-ID: <actualmessageid@mail.mail.gmail.com>\r\n\r\n'), ')']
Run Code Online (Sandbox Code Playgroud)
我将如何解析实际的消息ID?
我想在我的 PHP/Laravel 中使用 Sendgrid 动态设置取消订阅链接,类似于它在Ruby on Rails 中的演示。
我看到我需要使用 JSON 设置标头。有人可以帮助弄清楚此标头如何与简单的注册确认代码集成在一起吗?见下文:
Mail::send('emails.confirmation', ['user' => $user, 'resend_text' => $resend_text], function ($m) use ($user, $resend_text) {
$m->to($user->email)->subject('Confirm your email address'.$resend_text);
});
Run Code Online (Sandbox Code Playgroud) 我正在制作一个程序,将发票作为 PDF 附件发送给注册用户。每张发票均由 GUID 标识。在某些情况下,我希望能够以编程方式从邮件中查找 GUID,而无需阅读 PDF 文件。
我可以使用邮件标头字段来包含发票 GUID,还是这是一种不好的做法,并且邮件标头字段不适用于此目的?
我已将以下代码添加到发送电子邮件的PHP Mail应用程序中:
$email_header .= "Disposition-Notification-To: $from";
$email_header .= "X-Confirm-Reading-To: $from";
Run Code Online (Sandbox Code Playgroud)
但是,我们未收到任何"已发送"或"已读"确认.
有什么想法吗?
谢谢,
H.
我想在我的RoR项目中显示一个电子邮件正文.
class IncomingMail
def initialize(message, params)
if person = Person.find_by_email(message.from)
changeMessage = Message.where({person_id: person.id})
#message = message.subject.force_encoding("UTF-8")
message = message.body.encoded
changeMessage.first.text = message
changeMessage.first.backInMinutes = 0
changeMessage.first.showText = 1
changeMessage.first.doNotDisturb = 0
changeMessage.first.save
end
end
Run Code Online (Sandbox Code Playgroud)
但我也得到了电子邮件标题
> --e89a8ff1c0465030f204c082e054 Date: Mon, 21 May 2012 04:45:12 +0200 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1
> Content-Transfer-Encoding: 7bit Content-ID:
> <4fb9ac38c71d2_1e1343dd8042105b@ubuntu.mail> Text of the mail
Run Code Online (Sandbox Code Playgroud)
如何删除标题?
它的主题是这样的
message = message.subject.force_encoding("UTF-8")
Run Code Online (Sandbox Code Playgroud)
但不是身体.
email ruby-on-rails email-headers ruby-on-rails-3 mailman-gem
我正在使用Amazon SES发送电子邮件,我想在它发送给用户之前附加一个自定义标头,因为我正在创建一个代理电子邮件系统,用于回复我网站上的线程,因此ID保留为跟踪要通过电子邮件发布到哪个帖子.
我无法看到如何从Amazon SES的文档中附加自定义标题,除了这个页面解释了它们接受的标题但没有说明如何绑定它,我正在使用这个为PHP制作的SES包装器.
我希望能够注入一个以X-Thread-ID数字命名的标题,我将如何继续使用它?
编辑:对于杰克的回答,我无法正确发送电子邮件,它一直给我这个错误:
CFSimpleXML Object
(
[Type] => Sender
[Code] => InvalidParameterValue
[Message] => Missing final '@domain'
)
Run Code Online (Sandbox Code Playgroud)
我的标题就像这样
To: myemail@hotmail.co.uk <YES>
From: developer@mysite.com <MySite>
X-Thread-ID: 429038
Run Code Online (Sandbox Code Playgroud) 用于从 RFC822 兼容文件读取标头的库函数对我来说工作得很好,例如:
allRecips = []
for hdrName in ['to', 'cc', 'bcc']:
for i in email.utils.getaddresses(msg.get_all(hdrName, [])):
r = {
'address': {
'name': i[0],
'email': i[1]
}
}
allRecips.append(r)
Run Code Online (Sandbox Code Playgroud)
我现在想从msg上面示例中的结构中删除密件抄送收件人。我查看了del_param()这个,但无法弄清楚要传入的内容。有没有一种好方法可以删除可能存在的任何密件抄送标头(1 个或多个)?
请帮助我,我有使用PHP发送HTML格式的邮件mail()
的问题我认为问题在于标题.我已经包含两个标题,仅在单引号或双引号中略有不同:
标题1:
$headers = 'From: webmaster@example.com\r\n Reply-To: webmaster@example.com';
$headers .= '\r\nContent-Type: multipart/alternative; boundary="'.$random_hash.'"';
Run Code Online (Sandbox Code Playgroud)
当我使用上面的单引号时,我所有的html代码都在邮件中打印成简单的文本而没有正确的html格式.此外,我的标题显示在\r\n丢失后全部搞砸了所有内容.
标题2:
$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";
$headers .= "\r\nContent-Type: multipart/alternative; boundary=\"".$random_hash."\"";
Run Code Online (Sandbox Code Playgroud)
使用这个,我得到一个完美的标题,但现在我的邮件被发送空与空的附件.因为我没有附加任何东西到我的邮件,所以我不在哪里.
请建议做什么
基本上我要做的是将文件附加到我发送的电子邮件中.很简单吧?由于某种原因,它不喜欢以下代码(可能是因为标题).有人可以帮忙吗?
提前致谢!!
$subject = "File ".date("Ymd");
$message = "NONE";
$filename = "test.csv";
$content = chunk_split(base64_encode(file_get_contents($filename)));
$uid = md5(uniqid(time()));
$name = basename($file);
$header .= "MIME-Version: 1.0\r\n";
$header .= "From: noreply@x.com\r\n";
$header .= "Reply-To: noreply@x.com\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: text/csv; name=\"".$filename."\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$header …Run Code Online (Sandbox Code Playgroud) 我知道如何使用email.utils.parseaddr()来解析电子邮件地址.但是,我想解析多个电子邮件地址的列表,例如此标头的地址部分:
Cc: "abc" <foo@bar.com>, "www, xxyyzz" <something@else.com>
Run Code Online (Sandbox Code Playgroud)
一般来说,我知道我可以拆分正则表达式\s*,\s*来获取单个地址,但在我的示例中,其中一个地址的名称部分包含逗号,因此此正则表达式将错误地拆分标题.
我知道如何手动编写基于状态机的代码以正确地将该地址拆分成片段,并且我也知道如何编写与每个电子邮件地址匹配的复杂正则表达式.我不是在写这样的代码时请求帮助.相反,我想知道是否有任何现有的python模块可以用来正确拆分这个电子邮件地址列表,所以我不必"重新发明轮子".
先感谢您.
我想知道为什么我的base64电子邮件主题没有解码。我使用这个Perl代码来创建它:
use MIME::Base64;
use Encode;
$subject = "=?UTF-8?B?" . encode_base64(encode("utf8", $subject), "") . "?=";
Run Code Online (Sandbox Code Playgroud)
这给了我:
=?UTF-8?B?w63DsyBEZW1hbmRlIGRlIHJlc2VydmF0aW9uIGR1IHd3dy5jaGFtYnJlc2Rob3Rlcy5vcmcgLSBSZXNlcnZhdGlvbiByZXF1ZXN0IGZyb20gd3d3LmNoYW1icmVzZGhvdGVzLm9yZyBbI10=?=
Run Code Online (Sandbox Code Playgroud)
如果我复制并粘贴:
w63DsyBEZW1hbmRlIGRlIHJlc2VydmF0aW9uIGR1IHd3dy5jaGFtYnJlc2Rob3Rlcy5vcmcgLSBSZXNlcnZhdGlvbiByZXF1ZXN0IGZyb20gd3d3LmNoYW1icmVzZGhvdGVzLm9yZyBbI10=
Run Code Online (Sandbox Code Playgroud)
...进入此站点进行解码:
http://www.webatic.com/run/convert/base64.php
..然后结果很好!
完整的电子邮件标题如下所示:
Subject: =?UTF-8?B?w63DsyBEZW1hbmRlIGRlIHJlc2VydmF0aW9uIGR1IHd3dy5jaGFtYnJlc2Rob3Rlcy5vcmcgLSBSZXNlcnZhdGlvbiByZXF1ZXN0IGZyb20gd3d3LmNoYW1icmVzZGhvdGVzLm9yZyBbI10=?=
Run Code Online (Sandbox Code Playgroud)
这是它在我的电子邮件客户端中的显示方式:
...这就是我通过在线工具转换它时的看法:
更新:这实际上是Email::MIME创建电子邮件的方式:
From: "Andy chambresdhotes.org" <test@foo.org>
To: andynewby@bar.com
Subject: =?UTF-8?B?PT9VVEYtOD9CP3c2M0RzeUJFWlcxaGJtUmxJR1JsSUhKbGMyVnlk?=
=?UTF-8?B?bUYwYVc5dUlHUjFJSGQzZHk1amFHRnRZbkpsYzJSb2IzUmxjeTV2Y21jZ0xT?=
=?UTF-8?B?QlNaWE5sY25aaGRHbHZiaUJ5WlhGMVpYTjBJR1p5YjIwZ2QzZDNMbU5vWVcx?=
=?UTF-8?B?aWNtVnpaR2h2ZEdWekxtOXlaeUJiSTEwPT89?=
Date: Thu, 11 Jan 2018 14:46:05 +0000
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="15156819650.22DF651.1990"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Run Code Online (Sandbox Code Playgroud)
我用来制作标题的完整 Perl 代码是:
my $email = Email::MIME->create(
header_str => [
From => $from,
To => [ $to ],
Subject => …Run Code Online (Sandbox Code Playgroud) 有人可以指点我到哪里可以找到电子邮件标题的完整参考(日期,发件人,收件人,发件人等),如果有的话?
我正在阅读电子邮件标题(在Node.js中,对于那些保持分数的人),并且它们是多变的.该to字段中的电子邮件地址如下所示:
"Jake Smart" <jake@smart.com>, jack@smart.com, "Development, Business" <bizdev@smart.com>
Run Code Online (Sandbox Code Playgroud)
以及其他各种格式.有没有办法解析所有这些?
这是我的第一次刺:
split()在-不同的人分手到一个数组<或".<,则解析出电子邮件",则解析出名称,,则拆分以获取Last,First名称.如果我先对它进行拆分,,Development, Business则会导致拆分错误.空间也不一致.此外,我之前从未见过的标题中可能会有更多的电子邮件地址格式.有什么方法(或者可能是一个很棒的Node.js库)会为我做这一切吗?
email-headers ×13
email ×6
php ×5
python-3.x ×2
amazon-ses ×1
base64 ×1
imaplib ×1
laravel ×1
mailman-gem ×1
node.js ×1
parsing ×1
perl ×1
python ×1
sendgrid ×1
sendmail ×1
smtp ×1
split ×1