2013-05-04 4 views
4

Я бы хотел отправить письмо по адресу asp.net. Я использую этот код, и он работает нормально.Лучший способ для отправки предварительного электронного сообщения

mail.From = new MailAddress("[email protected]", "sender", System.Text.Encoding.UTF8); 
string to = Session["Umail"].ToString(); 
mail.To.Add(to); 
mail.IsBodyHtml = true; 

mail.SubjectEncoding = Encoding.UTF8; 
mail.BodyEncoding = Encoding.GetEncoding("utf-8"); 
mail.Subject = "subject"; 
mail.Body = "body" ; 
SmtpClient smtp = new SmtpClient("Smtp.gmail.Com", 587); 
smtp.UseDefaultCredentials = false; 
smtp.EnableSsl = true; 
smtp.Credentials = new NetworkCredential("[email protected]", "pass"); smtp.Send(mail); 

Но мне нужна обычная и красивая почта. Как электронные письма, отправляемые с facebook, команда google и т. Д. Я знаю, что могу использовать html-тег в mail.Body, но это хороший способ? Каков наилучший способ?

+0

Да, вы должны использовать HTML, как описано. Я не знаю, какой другой ответ вы ожидали? –

+0

Я хочу использовать стиль и образ. Я думаю, что это нехорошо, что использовать много тегов html и css внутри кода C#. могу ли я создать отдельный файл html и прикрепить его? – NASRIN

+0

Нет, вы должны включать стили в самом электронном письме. Почитайте об этом: http://css-tricks.com/using-css-in-html-emails-the-real-story/ –

ответ

4

Это готовое к использованию фрагмента кода, который я использую для отправки электронной почты, который содержит в себе как содержание текста и содержимое на основе шаблона HTML:

 // first we create a plain text version and set it to the AlternateView 
     // then we create the HTML version 
     MailMessage msg = new MailMessage(); 

     msg.From = new MailAddress("[email protected]", "From Name"); 
     msg.Subject = "Subject"; 
     msg.To.Add("[email protected]"); 
     msg.BodyEncoding = Encoding.UTF8; 

     String plainBody = "Body of plain email"; 

     //first we create the text version 
     AlternateView plainView = AlternateView.CreateAlternateViewFromString(plainBody, Encoding.UTF8, "text/plain"); 
     msg.AlternateViews.Add(plainView); 

     //now create the HTML version 
     MailDefinition message = new MailDefinition(); 
     message.BodyFileName = "~/MailTemplates/template1.htm"; 
     message.IsBodyHtml = true; 
     message.From = "[email protected]"; 
     message.Subject = "Subject"; 

     //Build replacement collection to replace fields in template1.htm file 
     ListDictionary replacements = new ListDictionary(); 
     replacements.Add("<%USERNAME%>", "ToUsername");//example of dynamic content for Username 

     //now create mail message using the mail definition object 
     //the CreateMailMessage object takes a source control object as the last parameter, 
     //if the object you are working with is webcontrol then you can just pass "this", 
     //otherwise create a dummy control as below. 
     MailMessage msgHtml = message.CreateMailMessage("[email protected]", replacements, new LiteralControl()); 

     AlternateView htmlView = AlternateView.CreateAlternateViewFromString(msgHtml.Body, Encoding.UTF8, "text/html"); 

//example of a linked image   
     LinkedResource imgRes = new LinkedResource(Server.MapPath("~/MailTemplates/images/imgA.jpg"), System.Net.Mime.MediaTypeNames.Image.Jpeg); 
     imgRes.ContentId = "imgA"; 
     imgRes.ContentType.Name = "imgA.jpg"; 
     imgRes.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; 
     htmlView.LinkedResources.Add(imgRes); 

     msg.AlternateViews.Add(htmlView); 

     //sending prepared email 
     SmtpClient smtp = new SmtpClient();//It reads the SMPT params from Web.config 
     smtp.Send(msg); 

и они являются ключевыми элементами шаблона HTML:

<p>Username: <%USERNAME%></p> 

<img src="cid:imgA"/> 
+0

Спасибо за ваш ответ, этот код, который я хотел ... Я тестировал его, и он работал нормально, но когда я хочу использовать изображение в верхней части почты, в gmail он только прикрепляет его, а в почте yahoo он прикрепляется и добавляет изображение внизу почты. Почему моя почта не добавила это изображение в правильное положение ??? – NASRIN

+0

Я думаю, что это вопрос вашего шаблона. Я только что протестировал этот фрагмент против отправки в учетную запись gmail, и результат заключается в том, что изображение помещено в правильное положение (я изменил его место). В моем шаблоне img-тег помещается в таблицу html i, чтобы расположить его (старый, а не css). Я бы упомянул, что LinkedResource встраивает изображение в электронную почту (а не по внешнему URL). – Bronek

1

Хотелось бы заказать обычную и красивую почту.

Я знаю, что может использовать html-тег в mail.Body, но это хороший способ? Что такое лучший способ?

Я не знаю точно , что это должно означать, но, как правило, есть два способа сделать это. (Если мы говорим об изображениях или источниках в электронной почте и т. Д.)

Вы можете использовать класс NET Framework. LinkedResource.

Представляет собой встроенный внешний ресурс в приложении электронной почты, такой как как изображение в вложении HTML.

Альтернативно и более просто, на мой взгляд, если вы хотите использовать некоторые изображения в вашей электронной почте, поместить изображение в общественном месте, то просто ссылаться на это место в HTML письма.

Смежные вопросы