16

テキストと画像の両方を含むメールを送信する必要があります。
そのため、メールで送信する必要があるコンテンツを含む .mhtml ファイルがあります。

これには Chilkat を使用していましたが、Outlook 2007 では、mhtml ファイルが別の添付ファイル (html+images) として表示されています。

mhtmlメールを送信するための他のコンポーネントを誰かに提案してもらえますか?
参考までに、私は.Net 3.5を使用しています

また、画像を送信する前にサーバーに保存したくありません。

ありがとうございました!

4

4 に答える 4

11

私は昔ながらのネイティブMailMessageクラスを使用しています。この以前の回答は、あなたを正しい方向に向けることができます

編集:外部の HTML ページをキャプチャし、そのコンテンツを解析し、すべての外部コンテンツ (css、画像など) を取得し、ディスクに何も保存せずに電子メールで送信する同様のコードを少し前に作成しました。

于 2010-01-20T11:32:14.847 に答える
4

画像を埋め込みリソースとして使用する例を次に示します。

MailMessage message = new MailMessage();
message.From = new MailAddress(fromEmailAddress);
message.To.Add(toEmailAddress);
message.Subject = "Test Email";
message.Body = "body text\nblah\nblah";

string html = "<body><h1>html email</h1><img src=\"cid:Pic1\" /><hr />" + message.Body.Replace(Environment.NewLine, "<br />") + "</body>";
AlternateView alternate = AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html);
message.AlternateViews.Add(alternate);

Assembly assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream("SendEmailWithEmbeddedImage.myimage.gif")) {
    LinkedResource picture = new LinkedResource(stream, MediaTypeNames.Image.Gif);

    picture.ContentId = "pic1"; // a unique ID 
    alternate.LinkedResources.Add(picture);

    SmtpClient s = new SmtpClient();
    s.Host = emailHost;
    s.Port = emailPort;
    s.Credentials = new NetworkCredential(emailUser, emailPassword);
    s.UseDefaultCredentials = false;

    s.Send(message);
}
}
于 2010-01-20T11:55:29.973 に答える
2
System.Net would be the one that you are looking for.<br/>
MailMessage is used to compose new mail.<br/>
SMTPClient is used to send mail.
NetworkCredentials would be used to attach username and password for making request to sending mail.


画像を追加する方法について質問があります。 MailMessage
を設定する必要があります。HTML でメールの相対パスを送信したい 場合は、このような場合のように機能しないため、次のような画像の場所への完全なパスを指定する必要があります 。完全なURLを動的に取得するには、次のように使用できます。isHtml=true
../directory/imagename.formate
websiteUrl/directory/imagename.formate
Request.Uri.GetLeftParth(URIPartial.Authority)+VitrtualToAbsolute.getAbsolute("~")

ここに直接書いたので、最後の行についてはよくわかりません。あなたはそれを使用して幸運を祈る必要があります;-)

于 2012-12-18T10:52:29.683 に答える
0

MIMEタイプを明示的にに設定する必要がありますmultipart/related。を変更しMailMessage.Bodyて、MHTMLファイルのコンテンツを含めます。最後に、コレクションに新しいアイテムを追加してMailMessage.AlternateViews、正しいMIMEタイプを定義します。MSDNからの次のリンクには、セットアップ方法の非常に良い例があります。

MailMessage.AlternateViewsプロパティ

于 2012-12-19T13:38:24.123 に答える