C#でメール送信

このQ&Aのポイント
  • C#でメール送信する際に発生する文字化けの問題について
  • C#のメール送信において、メーラーとの文字コード変換の違いによる文字化けに悩んでいます
  • C#のメール送信において、メーラーと同じような変換で文字化けせずにメールを送信する方法を知りたい
回答を見る
  • ベストアンサー

C#でメール送信

C#の System.Text.Encoding enc = System.Text.Encoding.GetEncoding(50220); System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient(); //SMTPサーバーを指定する sc.Host = "localhost"; //メッセージを送信する sc.Send(msg); で送信したメールと メーラー(Becky)で送信したメールでは Subjectなどの変換後の文字コードが全く違うものとなっており、 そのためか、文字化けしてしまいます。 メーラーと同じような変換で文字化けせずにメールを送信するには、 どのようにしたらいいのでしょうか?

  • ENTRE
  • お礼率0% (16/2523)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

「SmtpClientクラスを使ってメールを送信する」でメールのEncordingについて説明があります。 http://dobon.net/vb/dotnet/internet/smtpclient.html

関連するQ&A

  • C#のメール送信時のエラーについて

    こんにちは、今現在C#でメールの送信部分を作っているのですがどうしても送信途中でエラーがでてとまってしまいます。 一応、当方で確認したところによると文字コードに関するエラーが出ず、ただただ「送信ができませんでした」とハンドラで表示されます。 どのようにしたらよいでしょうか? どなたかご教授お願いします。 メールソフトのソースプログラム private void seButton_Click(object sender, EventArgs e) { //JISコード System.Text.Encoding enc = System.Text.Encoding.GetEncoding(50220); //MailMessageの作成 System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); //件名と本文の文字コードを指定する msg.SubjectEncoding = enc; msg.BodyEncoding = enc; //メールの送信元のアドレス msg.From = new System.Net.Mail.MailAddress("niihama-kosen@test.ac.jp"); //メールの送信先のアドレス msg.To.Add(new System.Net.Mail.MailAddress(adressBox.Text)); //メールの件名 msg.Subject = "coBox.Text"; //メールの本文 msg.Body = "hoBox.Text"; //SMTPサーバの設定 System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient(); //SMTPサーバの指定 sc.Host = "smtpBox.Text"; //メールの送信 sc.Send(msg); //msgの破棄 msg.Dispose(); }

  • (C#)auに、絵文字をHTMLメールにて送信したい。

    C#初心者です。 C#でauに、絵文字をHTMLメールにて送信したいのですが、 一部の絵文字は送信できるようになったのですが、 AUのE-MAIL送出用S-JISの絵文字CDの頭2ケタが(EB~EC)の絵文字が、すべて「・」になって、送信されてしまいます。 これらの絵文字も送れるようにしたいのですが、 どなたか絵文字・C#に詳しいかたいらっしゃいましたら、是非教えて下さい。 ------------------ using System; using System.Collections.Generic; using System.Text; using System.Net.Mail; using System.Net.Sockets; using System.IO; using System.Net.Mime; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Send_JIS_Mail(); } static string Enco(int code) //S-JIS 変換 { byte[] data = { (byte)(code / 256), (byte)(code % 256) }; return System.Text.Encoding.GetEncoding(932).GetString(data); } private static string myEncode(string str, Encoding enc) //base64 変換 { string base64str = Convert.ToBase64String(enc.GetBytes(str)); return string.Format("=?{0}?B?{1}?=", enc.BodyName, base64str); } private static void Send_JIS_Mail() { SmtpClient smtp = new SmtpClient(); MailMessage msg = new MailMessage(); Encoding myEnc = Encoding.GetEncoding("iso-2022-jp"); // 送信元 msg.From = new MailAddress( "XXXXXXXXXXXXXXXX@co.jp", myEncode("送信元", myEnc)); // 送信先 msg.To.Add(new MailAddress( "XXXXXXXXXXXXXXX@ezweb.ne.jp", myEncode("送信先", myEnc))); // 件名 msg.Subject = myEncode("件名", myEnc); msg.IsBodyHtml = true; // TEXTメール本文 msg.Body = "こんにちわ!!"; // HTMLメール本文 string sBody = "<html><body bgcolor = \"#ffff00\">" + "<div>絵文字⇒</div>" + Enco(0xEB59) + Enco(0xEB5A) + "</body></html>"; AlternateView altView = AlternateView.CreateAlternateViewFromString( sBody, myEnc, System.Net.Mime.MediaTypeNames.Text.Html); // Content-Transfer-Encoding: 7bit altView.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit; // altViewをメッセージに追加 msg.AlternateViews.Add(altView); // SMTPサーバ smtp.Host = "XXXXXXXX.co.jp"; try { // 送信 smtp.Send(msg); } catch (SmtpException exc) { // SMTPサーバー接続失敗時のエラー処理 // メッセージは、excですので、それを表示してもOK。 } //後始末 msg.Dispose(); } } }

  • C# メール送信ついて困っています

    c#で送信をしょうとしたらエラーが出ています。 ※自分のプロバイダー(biglobe)を使ってメールの例です。 //Mail Initialize System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient() smtp.Host = "mail.biglobe.ne.jp"; smtp.Port = 587; //Mail認証 smtp.Credentials = new System.Net.NetworkCredential("ユーザー名", "パスワード"); //SSL smtp.EnableSsl =true; System.Net.Mail.MailMessage oMsg = new System.Net.Mail.MailMessage("to アドレス", "from アドレス", "件名", "本文"); //メール送信 smtp.Send(oMsg); これを実施したらエラーが サーバーはセキュリティで保護された接続をサポートしていません。って出ています。 //SSLをfalseにしたら smtp.EnableSsl =false; メールボックスが使用できません。 サーバーの応答: Can not speak with youって出ています。 どこがいけないのでしょうか? どなたか教えて戴けませんか?お願いいたします。

  • メールの送信について

    現在、VBAを学習中なのですがメールの送信がどうしてもできません。 以下にコードを記述しますので、間違えている点などありましたら、ご指摘ください。 よろしくお願いいたします。 Imports System.Net.Mail Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim mailMessage As New System.Net.Mail.MailMessage("usename@gmail.com", "usename@hotmail.co.jp", "Subject", "Body") Dim smtpClient As New System.Net.Mail.SmtpClient("smtp.gmail.com") smtpClient.Credentials = New System.Net.NetworkCredential("usename@gmail.com", "pass") smtpClient.EnableSsl = False smtpClient.Port = 587 Try ' 送信する smtpClient.Send(mailMessage) MessageBox.Show("送信しました") Catch ex As SmtpException ' SMTPサーバーへの接続に失敗した場合 MessageBox.Show(ex.Message) End Try End Sub End Class

  • VB.NETからGmail経由でメールを送信について

    VB.NETからGmail経由でメールを送信について いつも大変お世話になっています。 VB.NETからGmail経由でメールを送信についてご教授願います。 Dim mailMessage As New System.Net.Mail.MailMessage _ ([送信元アドレス], [送信先アドレス], "題名", "本文") Dim smtpClient As New System.Net.Mail.SmtpClient _ ("smtp.gmail.com") smtpClient.Credentials = New System.Net.NetworkCredential _ ([送信元アドレス], "パスワード") ' << ※1 'smtpClient.EnableSsl = True ’<< ※2 smtpClient.Port = 587 smtpClient.Timeout = 10000 smtpClient.Send(mailMessage) <問題> 「送信できませんでした」とのエラーメッセージが表示。 <所感> ※1で[送信元アドレス]を設定しているのが原因?? ※2[True]/[False]を変更しても送信できませんでした。

  • C#におけるファイル読み取りの文字化け

    開発初心者です。 //Shift-JISコードとして開く System.IO.StreamReader sr = new System.IO.StreamReader(@txtShiteiFile.Text, System.Text.Encoding.GetEncoding(932)); //内容を全て読み込む string textAll = sr.ReadToEnd(); 以上の関数を使ってテキストファイル上の文字を読み取りしているのですが、 textAll 変数に入ったときに文字化けしています。 また、テキストファイルによっては文字化けしないときもあります。 この場合、どのような対処をすればよいのでしょうか?

  • Visual C#でのメール送信

    OS:Windows XP 言語:C# (Visual Studio 2005 Express) 以上の環境で、yahooのフリーアドレスからメールを送信するアプリケーションの作成をしようとしてます。 いろいろ参考にして以下のコードを書いてみましたがうまくいきません。 from = 送信元アドレス; to = あて先アドレス; subject = "テスト"; body = "テスト"; id = yahooID; pass = yahooのパスワード; MailMessage msg = new MailMessage(from, to, subject, body); SmtpClient sc = new SmtpClient("smtp.mail.yahoo.co.jp", 587); sc.Credentials = new System.Net.NetworkCredential(id, pass); sc.EnableSsl = false; sc.Timeout = 100000; sc.Send(msg); msg.Dispose(); エラーの内容は以下になります。 MTP サーバーにセキュリティで保護された接続が必要であるか、またはクライアントが認証されていません。 サーバーの応答: Sorry, please use SMTP-AUTH instead - for help go to http://help.yahoo.co.jp/help/jp/mail/whatisymail/whatisymail-51.html どなたか解決方法、あるいは参考HPなどを教えていただけると助かります。 よろしくお願いします。

  • メール送信時文字化けする

    ASP.NETでWebアプリケーションを開発しています。 Web上のフォームから入力された内容を、メール送信させたいのですが、メール送信自体はうまくいくのですが、受信した内容を見てみると、入力内容が全角450文字くらいを超えた時、なぜかそれ以降の入力内容が文字化けしていました。入力内容が約450文字未満の時は問題ありませんでした。 ちなみに、入力内容は、メール送信と同時にDBにも書き込んでいるのですが、DB上のデータは文字化けしていませんでした。よって、メール送信時に文字化けしているか、あるいは、受信するメーラーの設定の問題なのか、その他に原因があるのか、うまく切り分けができずに困っています。 メールの送信には、SmtpMailクラスのSend()メソッドを使っています。メーラーはBecky!を使用しています。フォームからの入力文字は1000文字程度を予定しています。 文字化けを回避する方法について、どなたかアドバイスいただけないでしょうか? なお、開発環境は以下のとおりです。  OS:Windows 2003 Server  IIS:ver6.0  Microsoft .NET Framework SDK v1.1 よろしくお願いいたします。

  • UTF-8でのメール送信の問題点

    メール送信のシステムをPerlで作っています。 文字コードUTF-8で送信しようと思っていますが、UTF-8の場合の問題点を教えてください。 自分で調べた限りでは、昔は対応していないメーラーだと文字化けしていたが、今は対応していないメーラーはないので、大丈夫、という認識です。 しかしながら、大手のAmazonやYahoo!、プロバイダや銀行などから飛んでくるメールは、ほとんど全てがISO-2022-JPで飛んできます。 自分が知っている限り、UTF-8を使用しているところはありません。 なので、UTF-8でメール送信することに不安を感じています。 AmazonやYahoo!は、UTF-8だと何か問題があったので、あえてISO-2022-JPを使っているのでしょうか? ISO-2022-JPだと 髙 などが文字化けするはずなのですが、髙→高に変換してメール送信しているのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • i18n_convert と mb_convert_encoding の違い

    メールの文字化け問題で色々ここも見たのですが ズバリ $enc = mb_detect_encoding($body); $body = mb_convert_encoding($body,"AUTO",$enc); と $enc = mb_detect_encoding($body); $body = i18n_convert($body,"AUTO",$enc); の違いが分かりません。 同じ事をしていると思うのですが・・・。 あと、受信するメーラーや PCが変わると 本文が文字化けしたりしなかったりで "AUTO"の部分をJISにしたらまず文字化けします AUTOなら良かったり良くなかったりです php.iniのこともよく出ていましたが 今レンタルサーバー使っています PHP 4.3.2 を入れているようです 文字コードについてはサーバー管理者に聞かないといけないのでしょうか パリッと文字化けしないようにしたいのですが 何かいい方法はないでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう