Ответ 1
Ваш SMTP-сервер должен быть настроен на автоматическое включение идентификатора сообщения. Если вы создаете свой собственный идентификатор, он должен следовать RFC 2822 Раздел 3.6.4.
Это мои настройки SMTP в App.Config:
<system.net>
<mailSettings>
<smtp from="Reminder <[email protected]>">
<network host="mail.myserver.net" port="587" password="my password" userName="[email protected]" enableSsl="true"/>
</smtp>
</mailSettings>
</system.net>
И вот как я отправляю электронные письма:
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
smtpClient.Send(message);
Это работает! но единственная проблема заключается в том, что мои письма отправляются в папку спама, и это потому, что в заголовке отсутствует Message-Id. Я использую ту же учетную запись в Thunderbird, когда я отправляю электронные письма с использованием thunderbird, Message-Id добавляется в мои письма, но это не происходит для сообщений электронной почты, отправленных из моего приложения.
Я могу добавить заголовок вручную с чем-то вроде:
message.Headers.Add("Message-Id","<3BD50098E401463AA228377848493927-1>");
Но этот идентификатор не является допустимым идентификатором сообщения, и я по-прежнему получаю отрицательный счет спама. Любая идея, почему это происходит?
Это то, что у меня есть в Thunderbird:
хост: mail.korax.net/
аутентификация: обычный пароль /
порт: 587/
безопасность: STARTTLS
Ваш SMTP-сервер должен быть настроен на автоматическое включение идентификатора сообщения. Если вы создаете свой собственный идентификатор, он должен следовать RFC 2822 Раздел 3.6.4.
См. также эту статью:
http://jarrett.co/post/1638578964/spamassassin-vs-system-net-mail
У меня была такая же проблема. System.Net.Mail
не будет автоматически добавлять идентификатор сообщения. Но вы можете так:
mailMessage.Headers.Add("Message-Id",
String.Format("<{0}@{1}>",
Guid.NewGuid().ToString(),
"mail.example.com"));