Прежде всего, мои извинения, если это дублирующий вопрос. Я много искал его, но не смог найти связанных вопросов.
Итак, вот проблема: я использую класс SmtpClient и MailMessage для отправки писем. Я передаю тему письма в качестве параметра метода отправки почты. В первый раз письмо отправляется с правильной темой (тот, который я отправил в качестве параметра). Однако во всех следующих письмах, какую бы тему я ни указал, тема остается прежней (той, что использовалась в первый раз). Субъект задается изнутри метода.
(Примечание: это приложение WindowsForm)
Что я пробовал, так это создание другого метода с именем «Обновить ()», который удаляет почтовый объект и создает его снова (только с информацией от и до). И вызывайте этот метод каждый раз после отправки почты. Но с этой проблемой не помогает.
Коды приведены ниже:
Поля:
MailMessage message;
SmtpClient mailer;
string from = "sender email";
string pass = "sender pass";
string to = "rec email";
Конструктор:
try
{
message = new MailMessage(from, to);
mailer = new SmtpClient("smtp.gmail.com", 587);
mailer.Credentials = new NetworkCredential(from, pass);
mailer.EnableSsl = true;
}
catch(Exception ex) { /*code to write log*/ }
Метод обновления:
void RefreshMessage()
{
try
{
message.Subject = "";
message.Dispose();
message = new MailMessage(from, to);
}
catch(Exception ex) { /*write log*/ }
}
Метод отправки почты:
internal void TextOnly(string sub, string bodyMessage)
{
try
{
message.Subject = sub;
message.Body = bodyMessage;
mailer.Send(message);
this.RefreshMessage();
}
catch (Exception ex) { /*write log*/ }
}
Пример того, как это называется:
m.TextOnly("Subject 1" , SomeStringMethod());
m.TextOnly("Another Title " + anyString, "Some string mail");
m.TextOnly("[TAG] Email subject goes here" , AnotherStringMethod());
Теперь независимо от того, какая тема отправлена в параметре, она всегда будет отправляться с темой «Тема 1» (из приведенного выше примера). С телом сообщения все в порядке, только тема не та.
У меня есть несколько других методов в классе (например, для других целей, таких как отправка писем с вложениями), где тема не передается в качестве параметра, а устанавливается непосредственно из метода (например, message.Subject = "Example Sub"
из метода), в этом случае это работает отлично.
Но в случае выше, когда субъект передается методу, субъект остается прежним.