我做了一些关于使用imap_headerinfo()函数的测试,我对结果感到困惑.
在小邮箱上,获取30条消息的数据需要0.5秒.在具有大约500条消息的邮箱上,大约需要7秒来检索相同数量的消息(30条消息)的数据.
为什么邮箱的大小与检索单个电子邮件的标头所需的时间有关?这是正常的吗?
我用这段代码来测试时间:
$time_start = microtime(true);
for ($i=0; $i < 30; $i++) {
message_header[$i] = imap_headerinfo($mbox, $i+1);
}
$time = microtime(true) - $time_start;
Run Code Online (Sandbox Code Playgroud)
编辑:
邮箱位于同一帐户中.
我接受了Christian Gollhardt的建议,并测量了对imap_headerinfo()函数的每次调用.
结果甚至更奇怪!首先,然后每隔22次对imap_headerinfo()函数的调用比其他函数多10000次.示例:第一次呼叫大约需要0.39秒,然后其他20次呼叫大约需要0.0001秒,然后第22次呼叫大约需要0.47秒,其他20次呼叫大约需要0.00004,依此类推.
编辑2:
经过一些研究后,还有其他的东西出现了.
如果您使用:
$message_header[$i] = imap_headerinfo($mbox, $i + 1);
每22次呼叫大约需要0.4秒,其他呼叫大约需要0.0001秒.
但是,您会期望得到相同的结果:
$message_header[$i] = imap_headerinfo($mbox, 30 - $i);
但是,在这种情况下,每次通话大约需要0.2秒!
这里唯一的区别是,在第二个示例中,标题是以反向消息顺序(从第30个到第1个)检索的,并且由于某种原因,它会极大地影响操作所需的时间.为什么?
注意:也在gmail帐户上测试过.数字之间的比例完全相同,所以我猜它与服务器无关.
先感谢您!
我试图找到某种答案,甚至是如何做到这一点的提示,但是没有运气。
我想检查电子邮件是否有附件。但如果我使用建议的代码:
Object content = bPart.getContent();
if (content instanceof String) {
if (Part.ATTACHMENT.equalsIgnoreCase(bPart.getDisposition()) || StringUtils.isNotBlank(bPart.getFileName())) {
// It's attachment
haveAttachment = true;
}
else {
// It's text or html
emailBody = content.toString();
}
}
else if (content instanceof InputStream) {
if (Part.ATTACHMENT.equalsIgnoreCase(bPart.getDisposition()) || StringUtils.isNotBlank(bPart.getFileName())) {
// It's attachment
haveAttachment = true;
}
}
Run Code Online (Sandbox Code Playgroud)
我必须在我的电子邮件上使用 getContent() 函数,并且邮件会在服务器上自动标记为“已读”。
任何人都可以帮助我如何编写一个简单的函数来获取基本的电子邮件信息并显示邮件是否有附件,而不必获取整个邮件内容?实际上,我只需要附件方面的帮助,因为我已经知道如何获取其他基本标头字段,并且他们不请求 getContent() 方法,也不将我的电子邮件标记为已查看。
普通电子邮件客户端如何做到这一点?我想一定有一些快速简单的方法来检查电子邮件是否有附件。
先感谢您!
编辑:或者,有没有办法使用 getContent() 函数而不将电子邮件标记为已查看?
我有一个扩展BitmapDrawable的类,如下所示:
public class MyDrawable extends BitmapDrawable {
protected Drawable drawable;
@Override
public void draw(Canvas canvas) {
if(drawable != null) {
drawable.draw(canvas);
}
}
// some other methods...
}
Run Code Online (Sandbox Code Playgroud)
和Eclipse警告我不推荐使用构造函数BitmapDrawable().一切都工作得很好,但我想修理我的课程,所以我没有得到这个消息.
任何帮助表示赞赏.