Я пытаюсь отправить уведомление по электронной почте себе, когда система завершила обработку платежа. Я использую следующий код:
public Exception SendEmail(string subject, string body)
try
{
var fromAddress = new MailAddress(Setting.Get("smtp_from"), Setting.Get("smtp_from_name"));
var toAddress = new MailAddress(Setting.Get("smtp_to"), Setting.Get("smtp_to"));
var smtp = new SmtpClient
{
Host = Setting.Get("smtp_host"),
Port = Int32.Parse(Setting.Get("smtp_port")),
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(fromAddress.Address, Setting.Get("smtp_password")),
Timeout = Int32.Parse(Setting.Get("smtp_timeout"))
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
return null; //All went well
}
catch (Exception ex)
{
return ex;
}
}
Ничего особенного, просто базовый код, найденный в Google. Этот код работает безупречно со следующим сообщением и темой:
Subject: [SUCCESS] Donation processed successfully
Message: This is a test.
Но, когда сообщение изменится на это:
Donation received and processed successfully! No further action is required.
Donor: John Doe
Donation amount: 4,00 EUR
Email: [email protected]
Mandrill API Response: Sent
В моем почтовом ящике ничего не отображается. Он отображается в отправленных элементах учетной записи, отправляющей электронное письмо. Я проверил все, спам, трэш, но он просто не приходит.
Кто-нибудь сталкивался с этим раньше? Кто-нибудь знает, как решить эту проблему?
Хорошо, я нашел проблему.
Посмотри на это:
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
Оператор using удаляет MailMessage до того, как вызывается метод.Send(message), и по какой-то причине это не вызывает исключения. facepalms
Это отлично работает для меня:
public static void SendEmail(string emailbody)
{
MailMessage mailMessage = new MailMessage("incoming email address", "receiver email address");
mailMessage.Body = emailbody;
mailMessage.Subject = "Feedback";
SmtpClient smtpClient = new SmtpClient("relay-hosting.secureserver.net", 25);
smtpClient.EnableSsl = false;
smtpClient.Send(mailMessage);
}
Надеюсь это поможет
string Contents = "Donation received and processed successfully! No further action is required. Donor: John Doe Donation amount: 4,00 EUR Email: [email protected] Mandrill API Response: Sent";
А затем:SendEmail(Contents);