Я попробовал ваши настройки из LINQPad на моем почтовом сервере hMailServer, и они отлично работали.Итак, я предполагаю, что почтовый сервер, с которым вы общаетесь, неожиданно связывается с клиентом.Когда я тестировал, я захватил SMTP-журнал со своего сервера, и вот как он выглядел (конечно, продезинфицирован):
SENT: 220 my.mailserv.er ESMTP
RECEIVED: EHLO CLIENTAPP
SENT: 250-my.mailserv.er[nl]250-SIZE 25600000[nl]250 AUTH LOGIN
RECEIVED: AUTH login bWFpbHRlc3RAbXkubWFpbHNlcnYuZXI=
SENT: 334 UGFzc3dvcmQ6
RECEIVED: ***
SENT: 235 authenticated.
RECEIVED: MAIL FROM:<mailtest@mailserv.er>
SENT: 250 OK
RECEIVED: RCPT TO:<happyuser@mailserv.er>
SENT: 250 OK
RECEIVED: DATA
SENT: 354 OK, send.
Мой сервер требует SMTP AUTH, и вы можете увидеть это после моего клиентаотправляет команду AUTH, сервер отвечает кодом состояния 334 и представлением в кодировке base-64 Password:
.Поэтому я бы рекомендовал включить функцию трассировки для SmtpClient, чтобы вы могли видеть, что происходит в обоих сценариях.
Я запускал LINQPad 4.31, и мой файл linqpad.config содержал:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<mailSettings>
<smtp from="mailtest@mailserv.er">
<network host="my.mailserv.er" port="25" userName="mailtest@mailserv.er" password="supersecure"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
Запрос LINQPad был следующим:
SmtpClient mailer = new SmtpClient();
Guid g = Guid.NewGuid();
g.Dump("Message GUID");
MailMessage msg = new MailMessage();
msg.Subject = "Test:" + g;
msg.To.Add(new MailAddress("happyuser@mailserv.er"));
msg.Body = "I HAS A BODY";
mailer.Send(msg);