本文中に多くの画像を含むメールを送信しようとしています。HTMLテキストがソースファイル(.cs)内の文字列に書き込まれている場合はすべて正常に機能しますが、すでに外部ファイルに書き込んでいる同じテキストを読み込もうとすると、メールは本文に画像を表示したいだけです(画像の代わりに) )と実物画像を添付します。
richtextbox から html に変換するには、コマンドRtf2Html.exe file.rcfでRTF-Converterを使用します
ソースコードで「手動で」書いたときに表示されるメールの本文に表示される外部ファイルテキストから読み取る方法は?
これが私のコードです:
using System;
using System.Collections.Generic;
using System.IO;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.Net;
using System.Net.Mail;
using System.Threading;
using AE.Net.Mail;
using System.Web;
using System.Net.Mime;
using System.Diagnostics;
using System.Text.RegularExpressions;
public void SendEmail()
{
System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage
SmtpClient sc = new SmtpClient();
try
{
m.From = new MailAddress("your.email@gmail.com", "Display your name");
m.To.Add(new MailAddress("some.email@gmail.com", "Display"));
m.Subject = "Test subject";
m.IsBodyHtml = true;
// m.Body = "Dont need this!";
FileStream fs = new FileStream("root.jpg",
FileMode.Open, FileAccess.Read);
System.Net.Mail.Attachment a = new System.Net.Mail.Attachment(fs, "C:\\root.jpg",MediaTypeNames.Application.Octet);
m.Attachments.Add(a);
/*
**This working when i put two images inside of code section in string "str" it send
mail with images inside of body**
*/
string str = "<html><body><h1><p><a href=\"http://www.google.hr\" target=\"_blank\">www.google.hr</a></p><h1>Picture</h1><img src=\"cid:image1\"><h1>First text</h1><img src=\"cid:image2\"><br/><h1>Second text</h1></body></html>";
/*
**If i read from file to string and send mail it will show images as attach ("source.html")
have same text as in above string "str"**
*/
// string str = File.ReadAllText("source.html");
AlternateView av =
AlternateView.CreateAlternateViewFromString(str,
null, MediaTypeNames.Text.Html);
LinkedResource lr = new LinkedResource("file1.jpg",
MediaTypeNames.Image.Jpeg);
LinkedResource lr2 = new LinkedResource("file2.jpg",
MediaTypeNames.Image.Jpeg);
lr.ContentId = "image1";
lr2.ContentId = "image2";
av.LinkedResources.Add(lr);
av.LinkedResources.Add(lr2);
m.AlternateViews.Add(av);
sc.Host = "smtp.gmail.com";
sc.Port = 587;
sc.Credentials = new System.Net.NetworkCredential("your.email@gmail.com", "yourpassword1");
sc.EnableSsl = true;
sc.Send(m);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}