我想知道是否有可能通過.NET 2.0 MailMessage object發送一個即時創建的內聯MHTML文件。發送內聯MHTML
內聯我的意思是:它應該以用戶可以看到它的方式發送,一旦他打開電子郵件,而不必打開/下載附件。
我想知道是否有可能通過.NET 2.0 MailMessage object發送一個即時創建的內聯MHTML文件。發送內聯MHTML
內聯我的意思是:它應該以用戶可以看到它的方式發送,一旦他打開電子郵件,而不必打開/下載附件。
你想添加一些圖像到html電子郵件?
要完成此操作,您需要將圖像嵌入到電子郵件中。我發現一個tutorial在幾行代碼中完成它。您也可以購買aspnetemail組件。它一直幫助我發送帶有嵌入式圖像的電子郵件,如果發生任何問題,他們也會有一個出色的支持團隊。
請記住,嵌入圖像,使您的電子郵件較重,但更好:)
(jdecuyper - 感謝塞,因爲我寫aspNetEmail)。
你可以用aspNetEmail做到這一點。您可以用MHT替換電子郵件的全部內容。
你不能用System.Net.Mail做到這一點,但如果你想走商業路線,請在[email protected]發郵件給我,我會告訴你如何做到這一點。
如果您想要使用開源路由,可能需要修改一些代碼項目上的SMTP代碼。基本上,你會注入你的內容到SMTP進程的DATA命令中。
需要注意的一件事:如果您的MHT文檔嵌入了腳本,flash,activeX對象或任何可能被郵件客戶端阻止的內容,它可能不會呈現與您在瀏覽器中看到的內容相同的內容。
非常歡迎,這是一個很好的產品:) – jdecuyper 2009-05-28 14:21:48
這有點棘手,但是,你可以做到。事實上,MailMessage類只不過是系統的CDO.Message類之上的一個包裝器,它可以做到這一點。 您也可以使用AlternateView功能,它更簡單:
MailMessage mailMessage = new MailMessage("[email protected]"
,"[email protected]"
,"test"
,"");
string ContentId = "wecandoit.jpg";
mailMessage.Body = "<img src=\"cid:" + ContentId + "\"/>";
AlternateView av = AlternateView.CreateAlternateViewFromString(mailMessage.Body
,null
,MediaTypeNames.Text.Html);
LinkedResource lr = new LinkedResource(@"d:\Personal\My Pictures\wecandoit.jpg");
lr.ContentId = ContentId;
lr.ContentType.Name = ContentId;
lr.ContentType.MediaType = "image/jpeg";
av.LinkedResources.Add(lr);
mailMessage.AlternateViews.Add(av);
SmtpClient cl = new SmtpClient();
cl.PickupDirectoryLocation = @"c:\test";
cl.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
cl.Send(mailMessage);
它是通過CDO.Message可能(這是必要添加到項目引用COM庫「微軟CDO的Windows 2000庫」):
protected bool SendEmail(string emailFrom, string emailTo, string subject, string MHTmessage)
{
string smtpAddress = "smtp.email.com";
try
{
CDO.Message oMessage = new CDO.Message();
// set message
ADODB.Stream oStream = new ADODB.Stream();
oStream.Charset = "ascii";
oStream.Open();
oStream.WriteText(MHTmessage);
oMessage.DataSource.OpenObject(oStream, "_Stream");
// set configuration
ADODB.Fields oFields = oMessage.Configuration.Fields;
oFields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = CDO.CdoSendUsing.cdoSendUsingPort;
oFields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = smtpAddress;
oFields.Update();
// set other values
oMessage.MimeFormatted = true;
oMessage.Subject = subject;
oMessage.Sender = emailFrom;
oMessage.To = emailTo;
oMessage.Send();
}
catch (Exception ex)
{
// something wrong
}
}
它通過CDO.Message是可能的(這是需要添加到項目引用COM庫「微軟CDO的Windows 2000庫」):
protected bool SendEmail(string emailFrom, string emailTo, string subject, string MHTmessage)
{
string smtpAddress = "smtp.email.com";
try
{
CDO.Message oMessage = new CDO.Message();
// set message
ADODB.Stream oStream = new ADODB.Stream();
oStream.Charset = "ascii";
oStream.Open();
oStream.WriteText(MHTmessage);
oMessage.DataSource.OpenObject(oStream, "_Stream");
// set configuration
ADODB.Fields oFields = oMessage.Configuration.Fields;
oFields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = CDO.CdoSendUsing.cdoSendUsingPort;
oFields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = smtpAddress;
oFields.Update();
// set other values
oMessage.MimeFormatted = true;
oMessage.Subject = subject;
oMessage.Sender = emailFrom;
oMessage.To = emailTo;
oMessage.Send();
}
catch (Exception ex)
{
// something wrong
}
}
你好,以及不完全是,我不是想嵌入圖像 我有一份報告(SSRS)報告genirated和保存爲一天中的特定時間在服務器上的MHTML文件我發送它作爲電子郵件附件,問題是我可以發送它,所以它被嵌入到電子郵件它自己 – Ali 2009-05-27 18:45:08
你好,你可以讀取MHTML到緩衝區(如任何類型的文件),並將其添加到您的電子郵件的正文。您可能需要做一些額外的工作來替換MHTML中包含的CID。那是你想要達到的目標嗎? – jdecuyper 2009-05-27 23:45:57