我目前正在从PHP的mail()函数发送html格式的电子邮件,并检查它们只是为了确保它们显示为HTML(格式化一边,我很清楚格式将从客户端到客户端变化(可能很大)) .它们在Apple Mail客户端以及我的iPhone上显示为HTML.但是,Gmail只是拒绝将其显示为HTML.并且我并不是说它的格式不正确,它只是不使用它出现的HTML.
奇怪的是,正在加载来自标签的img,但是就是这样......是不是我主要使用div进行布局,这对于Gmail或其他东西来说太新了(vs表)?
至于CSS以及什么不是,查看原始源显示以下内容:
<html><head><style>body { background-color: #F2F2F2; font-family: Arial; color: #5C5C5C; font-size: 11pt; } a { color: #46AAFF; text-decoration: none; } #container { width: 750px; margin-right: auto; margin-left: auto; } #header { float: right; padding: 3px; height: 30px; } #header a { color: #666666; margin-right: 10px; } #mainBody { padding: 20px; background-color: #FFF; border: 1px solid #DADADA; border-radius: 3px; } #imageArea { border-top: solid #E8E8E8 1px; margin: 15px; } #singleImageArea { width: 250px; padding: 15px; } #singleImageArea p …Run Code Online (Sandbox Code Playgroud) 我目前正在使用Python imaplib来处理电子邮件文本.
我使用fetch命令从GMail服务器获取原始数据电子邮件.但是,我发现有一件事很棘手 - 等号'='.它不是正常的等号,而是一个特殊的符号.
例如:
'='有时用作文本行末尾的连字符标记:
Depending upon your module selections, course lecturers may also contact yo=
u with preparatory work over the next few weeks. It would be wise to start =
reviewing the preparatory reading lists provided on the module syllabi now =
Run Code Online (Sandbox Code Playgroud)有时,它充当类似'%'的转义标记,例如:
a=20b实际上实际上a<SPACE>b
=46rom here是From here
我对这种奇怪的符号感到困惑.我认为必须有一个指导来处理这个,因为GMail可以在他们的应用程序中正确处理这样的事情.
我发现这与HTML编码有关,就像'%'将被编码一样.但问题是,我从IMAP响应得到的只是一个包含这个'='符号的字符串.我该怎么处理?使用正则表达式?
我正在寻求一些帮助登录到一个Gmail帐户并使用python脚本下载一些电子邮件.我正在尝试调整此处找到的方法,但我遇到了第1步的问题,通过imap访问帐户.
这是我开始的代码:
import email
import imaplib
m = imaplib.IMAP4_SSL("imap.gmail.com",993)
rc, resp = m.login('myemailaddress','mypassword')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Traceback (most recent call last):
File "email.py", line 1, in <module>
import email, imaplib
File "/home/will/wd/email.py", line 14, in <module>
m.login('myemailaddress','mypassword')
File "/usr/lib/python3.4/imaplib.py", line 538, in login
raise self.error(dat[-1])
imaplib.error: b'[ALERT] Please log in via your web browser: http://support.google.com/mail/accounts/bin/answer.py?answer=78754 (Failure)'
Run Code Online (Sandbox Code Playgroud)
确实在gmail设置中启用了Imap.我已经查看了谷歌支持链接上的说明以及类似情况下有关此错误的问题,例如此处和此处,但我的情况与第一次不同,因为
1)它从未开始工作,
2)我是不经常运行它被阻止.它也与第二个示例不同,因为这是一个普通的Gmail帐户,而不是具有谷歌应用程序帐户的自定义域.
使用https://accounts.google.com/DisplayUnlockCaptcha尝试并允许访问对我来说也不起作用.
允许登录工作的唯一方法是将我的Google帐户安全设置更改为"允许访问安全性较低的应用".
我的问题是:我如何修改我的代码(或更常见的设置)以允许我登录,而无需放宽我的帐户安全设置?有没有办法使用libimap满足安全要求?
您可以使用网络界面,Google的Android客户端或使用IMAP访问Gmail.据我所知,网络界面和Android应用程序使用的协议与IMAP完全不同 - 它们不仅仅是接口.我之所以确定这一点,是因为Android应用程序可以毫无问题地在<3秒内打开1m邮件的文件夹.没有普通的IMAP客户端可以做到这一点.
所以我的问题是这个秘密协议的知识是什么?它的参考文档在哪里?是否进行了逆向工程?谷歌是否批准其使用?
arnt的答案提供了一种测试gmail原始imap速度的绝佳方法:
$ openssl s_client -host imap.gmail.com -port 993 -crlf
...
* OK Gimap ready for requests from 12.34.56.78
$ a LOGIN ***@*** ***
a OK
$ c SELECT "[Gmail]/All mail" !!!!
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] Flags permitted.
* OK [UIDVALIDITY 673376278] UIDs valid.
* 1142417 EXISTS
* 0 RECENT
* OK [UIDNEXT 1159771] Predicted next UID.
* OK [HIGHESTMODSEQ 8670601]
c OK [READ-WRITE] [Gmail]/All …Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本来分析我的邮箱,并希望定期检查新邮件.搜索条件是:给我UID大于X的所有电子邮件的UID,其中X是我处理的最后一封电子邮件的UID.
或者,更一般地说,我正在寻找一种仅在我上次搜索后才能看到消息的方法.
请注意,我不是在寻找看到/看不见的消息; 该脚本以只读方式打开邮箱,我希望它不会干扰我的标志等.
我知道我可以在IMAP搜索中指定一个日期,但其粒度似乎是白天,所以不完全是我需要的.
我开始使用Gmail作为IMAP服务器,但希望将来支持通用IMAP服务器.
有没有办法搜索UID大于X的电子邮件?或者从消息X开始指定所有消息的另一种方法?
Thunderbird的过滤机制很适合简单的事情.但我想做点什么
(如果邮件包含xy或发件人是yz)并且已读取状态,请移至垃圾箱
问题是,一个过滤规则只能匹配任何(= OR)或所有(= AND)过滤条件.我尝试解决这个问题,首先在第一个过滤器中使用不可能的标记组合标记所有消息,然后使用第二个过滤器将所有标记的+标记的消息移动到垃圾箱(如果它们被读取),但这种方法效果非常差,如有时消息没有被标记,有时标记的消息不会被删除.
所有这一切的目的是在我阅读它们后立即删除不重要或通知电子邮件.当然,我可以为它们中的每一个做一个单独的过滤器,但是如果我想要改变一些东西,那么对于所有> 20-30个过滤规则来说,它会变得乏味.
是否可能以某种方式破解过滤器配置或是否只使用一个过滤器进行复杂过滤?
顺便说一句.如果这可能很重要,我正在使用Gmail + IMAP.
我正在使用Google的Oauth 2.0来获取用户的access_token,但我不知道如何使用imaplib来访问收件箱.
Gmail存在一个问题,即会话标签未应用于到达会话线索的新邮件.在这里发布细节
我们发现了一个Google Apps脚本,用于修复Gmail收件箱中各个邮件的标签,以解决此问题.脚本如下:
function relabeller() {
var labels = GmailApp.getUserLabels();
for (var i = 0; i < labels.length; i++) {
Logger.log("label: " + i + " " + labels[i].getName());
var threads = labels[i].getThreads(0,100);
for (var j = 1; threads.length > 0; j++) {
Logger.log( (j - 1) * 100 + threads.length);
labels[i].addToThreads(threads);
threads = labels[i].getThreads(j*100, 100);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,由于Google Apps脚本的执行时间限制为5分钟,此脚本会在超过20,000封邮件的邮箱上超时.
任何人都可以建议一种优化此脚本的方法,以便它不会超时?
我想借助php在我的网站上创建一个IMAP服务.它基本上只有很少的步骤.
我想要的主要部分是我得到一个gmail帐户文件夹列表,点击一个特定文件夹,该文件夹中的邮件列表应该打开,点击任何特定邮件,其详细信息应该打开.
我有文件夹列表,我有一个邮件列表,我有邮件的详细信息,但它们是单独的部分,但我希望结合并创建一个如上所述的过程.
下面给出3个步骤的代码
步骤1列出文件夹:它将列出gmail的所有文件夹.我的代码是
$folders = imap_list($imap, "{imap.gmail.com:993/imap/ssl}", "*");
echo "<ul>";
foreach ($folders as $folder) {
$folder = str_replace("{imap.gmail.com:993/imap/ssl}", "", $folder);
$folder = str_replace("[Gmail]/", "", $folder);
echo '<li>' . $folder . '</li>';
}
echo "</ul>";
Run Code Online (Sandbox Code Playgroud)
o/p第1步
INBOX
DRAFT
SENT
TRASH
Run Code Online (Sandbox Code Playgroud)
步骤2列出电子邮件(点击文件夹邮件列表应该打开)
$numMessages = imap_num_msg($imap);
for ($i = $numMessages; $i > ($numMessages - 20); $i--)
{
$header = imap_header($imap, $i);
$fromInfo = $header->from[0];
$replyInfo = $header->reply_to[0];
$details = array(
"fromAddr" => (isset($fromInfo->mailbox) && isset($fromInfo->host))
? $fromInfo->mailbox . "@" . $fromInfo->host …Run Code Online (Sandbox Code Playgroud) gmail-imap ×10
gmail ×6
imap ×6
email ×4
python ×3
imaplib ×2
css ×1
html ×1
html-email ×1
mutt ×1
oauth-2.0 ×1
php ×1
phpmyadmin ×1
protocols ×1
thunderbird ×1