使用Indy发送邮件到Gmail地址时,邮件被标记为垃圾邮件

3

你好,我正在尝试从 Delphi (indy) 发送一条消息到 Gmail 地址。但是当我去 Gmail 查看时,发现我的消息被放在了垃圾邮件文件夹中。如果我使用 PHPMailer 从 Web 发送同样的消息,则可正确工作。这是代码:

谢谢

//setup SMTP
SMTP.Port := 25;
SMTP.ConnectTimeout := 1000;
SMTP.Host := 'smtp.xxxxxx.it';
SMTP.Username := 'info@xxxxxx.it';
SMTP.Password := 'xxxxxx';
SMTP.Connect();

if SMTP.Authenticate then
begin
    //setup mail message
    MailMessage.From.Name := 'xxxxxx';
    MailMessage.From.Address := 'info@xxxxxx.it';
    MailMessage.Recipients.EMailAddresses := 'xxxxxx@gmail.com';

    MailMessage.Subject := ledSubject.Text;
    MailMessage.ContentType := 'multipart/mixed';
    htmpart := TIdText.Create(MailMessage.MessageParts, nil);
    htmpart.Body := Body.Lines;
    htmpart.ContentType := 'text/html';

    //send mail
    try
        try
            SMTP.Send(MailMessage);
        except on E:Exception do
            StatusMemo.Lines.Insert(0, 'ERROR: ' + E.Message);
        end;
    finally
        if SMTP.Connected then SMTP.Disconnect;
    end;
end;

2
然后 Gmail 垃圾邮件过滤器不喜欢你的 info@xxxxxx.it 地址。 - TLama
1
可能是我的域名发送的电子邮件被归为垃圾邮件的重复问题。 - Ken White
1
@TLama也许GMail对电子邮件代理也持怀疑态度?问题说从PHPMailer发送的邮件不被视为垃圾邮件。 - iMan Biglari
@iManBiglari,我没有考虑到那个。是的,那可能是解决办法。[+1] - TLama
2个回答

4

我想我已经找到了问题所在。当我在“原始模式”下查看消息时,在标题中发现谷歌说“缺少ID”,然后我尝试添加此代码:

    MailMessage.MsgId := '1234567890@drinkmessage.it';
    MailMessage.ExtraHeaders.Values['Message-Id'] := MailMessage.MsgId;

现在看起来一切都正常。谢谢。

你不需要使用 ExtraHeaders 属性,只需单独使用 MsgId 属性即可。 - Remy Lebeau

1

你尝试过更改IdSMTPHeloNameMailAgent吗?如果您与PHPMailer使用相同的域名,则我的猜测是GMail认为来自您的应用程序的电子邮件是垃圾邮件,因为它无法检测/喜欢发送它们的应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接