在.net中给手机发送简单邮件

    技术2022-05-19  41

      由于.net中有发送邮件类SmtpClient和邮件内容类MailMessage,因此发送邮件基本上比较简单。但是需要注意的是,

    如果是给手机发送邮件的话,需要一些额外的邮件头和编码的设置。本文以日本的手机为例子说明,国内的手机发送邮件

    功能我没有尝试过。

      不是所有的手机都支持UNICODE,基本上Web页以shift-jis为主,邮件以iso-2022-jp为主。因此对于手机邮件,为了

    保证没有乱码,编码格式只能选择 iso-2022-jp。

      另外,对于邮件标题,按照iso-2022-jp编码后,必须进行Base64的编码。当然了,正文也要进行iso-2022-jp编码。

      完整的VB.net例子如下(邮件不带附件):

     

    Imports System.Net.Mail

     

    Public Const MAIL_EncodeName As String = "iso-2022-jp"Public Const MAIL_LanguageName As String = "ja-JP"

    Public Sub SendMail(ByVal strTo As String, ByVal strSubject As String, ByVal strBody As String) Try     '编码定义     Dim targetEncode As System.Text.Encoding = System.Text.Encoding.GetEncoding(MAIL_EncodeName)

        

         'MailMessage作成     Dim msg As New MailMessage()

         msg.Headers.Add("Accept-Language", MAIL_LanguageName)     msg.Headers.Add("Content-Language", MAIL_LanguageName)     msg.Headers.Add("acceptlanguage", MAIL_LanguageName)     msg.Headers.Add("Content-Type", String.Format("text/plain; charset=""{0}""", MAIL_EncodeName))     msg.Headers.Add("Content-Transfer-Encoding", "quoted-printable")

     

         '收信人地址

         msg.To.Add(New MailAddress(strTo))

        

        '邮件标题

         msg.Subject = String.Format("=?{0}?B?{1}?=", _             MAIL_EncodeName, _             Convert.ToBase64String(targetEncode.GetBytes(strSubject)))

     

         '邮件正文

         Dim byteBody As Byte() = targetEncode.GetBytes(strBody)     msg.BodyEncoding = targetEncode     msg.Body = targetEncode.GetString(byteBody)

        

         Dim mail As New SmtpClient()     '邮件发送     mail.Send(msg)

         '结束     msg.Dispose()

     Catch ex As Exception     '错误处理 End TryEnd Sub

     

     为了方便管理,邮件服务器地址和送信人信息记录在Config文件中,app.config例子如下:

        <system.net>      <mailSettings>        <smtp from="info@abc.jp">          <network host="mail.abc.jp" port="25" userName="info@abc.jp" password="xxxxx"/>        </smtp>      </mailSettings>    </system.net> 

      这样发送的邮件,普通的电脑能正确解析,手机也能正确解析。

     


    最新回复(0)