小编mil*_*osh的帖子

为什么PHP imap_headerinfo()在大邮箱上的运行速度要慢得多?

我做了一些关于使用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帐户上测试过.数字之间的比例完全相同,所以我猜它与服务器无关.

先感谢您!

php email imap

5
推荐指数
1
解决办法
950
查看次数

使用javamail检查附件而不获取邮件内容

我试图找到某种答案,甚至是如何做到这一点的提示,但是没有运气。

我想检查电子邮件是否有附件。但如果我使用建议的代码:

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() 函数而不将电子邮件标记为已查看?

java email jakarta-mail

5
推荐指数
1
解决办法
4441
查看次数

构造函数BitmapDrawable()已被弃用

我有一个扩展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().一切都工作得很好,但我想修理我的课程,所以我没有得到这个消息.

任何帮助表示赞赏.

java eclipse android

4
推荐指数
1
解决办法
6245
查看次数

标签 统计

email ×2

java ×2

android ×1

eclipse ×1

imap ×1

jakarta-mail ×1

php ×1