-6

このようなコードを実行することで、テキスト画像を作成し、それを jpeg ファイルに変換できると思いますが、この画像をメールに埋め込んで送信する方法を教えてください。

string Text = HttpContext.Current.Request.QueryString["Text"]; 
Color FontColor = Color.Blue; 
Color BackColor = Color.White; 
String FontName = "Times New Roman"; 
int FontSize = 10; 
int Height = 150; 
int Width = 150;

Bitmap bitmap = new Bitmap(Width, Height); 
Graphics graphics = Graphics.FromImage(bitmap); 
Color color = Color.Gray; 
System.Drawing.Font font = new System.Drawing.Font(FontName, FontSize);
PointF point = new PointF(5.0F, 5.0F); 

SolidBrush BrushForeColor = new SolidBrush(FontColor);
SolidBrush BrushBackColor = new SolidBrush(BackColor);
Pen BorderPen = new Pen(color); 

System.Drawing.Rectangle displayRectangle = new System.Drawing.Rectangle(new Point(0, 0), new Size(Width - 1, Height - 1));
graphics.FillRectangle(BrushBackColor, displayRectangle);
graphics.DrawRectangle(BorderPen, displayRectangle);
StringFormat format1 = new StringFormat(StringFormatFlags.NoClip);
StringFormat format2 = new StringFormat(format1);
graphics.DrawString(Text, font, Brushes.Red, (RectangleF)displayRectangle, format2);

HttpContext.Current.Response.ContentType = "image/jpeg";
bitmap.Save(HttpContext.Current.Response.OutputStream, ImageFormat.Jpeg);
4

1 に答える 1

2

以下のコード サンプルでは、​​メッセージの作成と、件名、本文、およびアドレスの追加をスキップしています。これは、最初にバイト配列に格納された画像を埋め込むために使用されるコードを示しています。重要なのは、イメージをメモリ ストリームに入れることです。

//... other System.Net.Mail.MailMessage creation code
// CustomerSignature is a byte array containing the image
System.IO.MemoryStream ms = new System.IO.MemoryStream(CustomerSignature);
System.Net.Mime.ContentType contentType = new System.Net.Mime.ContentType();
contentType.MediaType = System.Net.Mime.MediaTypeNames.Image.Jpeg;
contentType.Name = "signature.jpg";
System.Net.Mail.Attachment imageAttachment = new System.Net.Mail.Attachment(ms, contentType);
mailMessage.Attachments.Add(imageAttachment);
System.Net.Mail.LinkedResource signature = new System.Net.Mail.LinkedResource(ms, "image/jpeg");
signature.ContentId = "CustomerSignature";
System.Net.Mail.AlternateView aView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(mailMessage.Body, new System.Net.Mime.ContentType("text/html"));
aView.LinkedResources.Add(signature);
mailMessage.AlternateViews.Add(aView);

埋め込まれた画像が一部の電子メール プログラムで表示され、他の電子メール プログラムでは表示されないという問題がありました。リンクされたリソースを作成する行を変更し、新しい AlternativeView を作成する行と、より広い範囲のプログラムで画像を表示できるようになりました。

于 2012-08-10T18:28:07.567 に答える