Вот мой метод тестирования заголовков MailMessage:
private void Send_Email(string smtp_server, int port, string display_name, string from, string to, string subject, string html_body, string sender_email, string sender_password)
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress(from, display_name, Encoding.UTF8);
mail.To.Add(to);
mail.SubjectEncoding = Encoding.UTF8;
mail.Subject = subject;
mail.Headers.Add("Reply-To", "Reply-To__ <" + from + ">");
mail.Headers.Add("Sender", from);
mail.Headers.Add("Return-Path", from);
mail.Headers.Add("MIME-Version", "1.0");
string boundary = Guid.NewGuid().ToString();
mail.Headers.Add("Content-Type", "multipart/mixed; boundary=--" + boundary);
//mail.Headers.Add("", Environment.NewLine);
//mail.Headers.Add("", Environment.NewLine);
//mail.Headers.Add("", "--" + boundary);
//mail.Headers.Add("Content-Type", "text/html; charset=utf-8");
//mail.Headers.Add("Content-Transfer-Encoding", "base64");
//mail.Headers.Add("", Environment.NewLine);
//var bytes = Encoding.UTF8.GetBytes(html_body);
//var base64 = Convert.ToBase64String(bytes);
//mail.Headers.Add("", base64.ToString());
//mail.Headers.Add("", "--" + boundary);
SmtpClient smtp = new SmtpClient();
smtp.UseDefaultCredentials = true;
//smtp.Credentials = new System.Net.NetworkCredential(sender_email, sender_password);
smtp.Host = smtp_server;
smtp.Port = port;
smtp.Timeout = 60000;
smtp.SendCompleted += (s, e) =>
{
if (e.Cancelled)
{
MessageBox.Show("sending email was canceled");
}
if (e.Error != null)
{
MessageBox.Show("sending email was failed -> Error : " + e.Error.ToString());
}
else
{
MessageBox.Show("email was sent successfully");
}
mail.Dispose();
};
try
{
smtp.SendAsync(mail, null);
}
catch (System.Net.Mail.SmtpException exp)
{
MessageBox.Show("sending email was failed, SmtpException -> Error : " + exp.ToString());
mail.Dispose();
}
}
В php ваши руки свободны и вы можете очень хорошо создавать заголовки и структуру почты,
Взгляните на этот пример:
http://www.sanwebe.com/2011/01/send-php-mail-with-attachment
Я хочу сделать что-то вроде php в .Net и сделать мою структуру почты с помощью заголовков.
Но ошибки в моих кодах связаны с этими строками:
mail.Headers.Add("", "бло бло бло");
И Ошибка :
Часть имени не может быть пустой...
Как я могу обойти эту ошибку и создать каждый кусок моей почты, используя заголовки:
такие как -> Тело - Вложения - и т.д.
После ответ на мой вопрос, я выясню, как я могу объединить несколько Content-Types:
например -> html - plain/text - октет - и т. д.