本人使用以下方法发送邮件,在中文版的系统下没有问题,但是移植到英文版的系统就会出现中文乱码的问题,也知道是编码的问题,但不知道该怎么修改,请高手指点一下
Imports CDO
Public Class sendEmail
Public Function send(ByVal toEmail, ByVal subject, ByVal content, ByVal htmlEnable) As Boolean
Dim msg As CDO.Message = New CDO.Message
Dim config As CDO.IConfiguration = msg.Configuration
Dim oFields As ADODB.Fields = config.Fields
Try
msg.From = "[email protected] (管理员)"
msg.To = toEmail
msg.Subject = subject
If htmlEnable = 1 Then
msg.HTMLBody = content & "<br><a href='http://database/index.htm'>点击进行登录</a>"
msg.HTMLBodyPart.Charset = "gb2312"
Else
msg.TextBody = content
msg.BodyPart.Charset = "gb2312"
End If
oFields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2
oFields("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = "admin"
oFields("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = "1234"
oFields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 1
oFields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = "test"
oFields("http://schemas.microsoft.com/cdo/configuration/languagecode").Value = "0x0804"
oFields.Update()
msg.Send()
Return True
Catch ex As Exception
Dim test As String = ex.Message.ToString()
Return False
Finally
msg = Nothing
oFields = Nothing
End Try
End Function
Imports CDO
Public Class sendEmail
Public Function send(ByVal toEmail, ByVal subject, ByVal content, ByVal htmlEnable) As Boolean
Dim msg As CDO.Message = New CDO.Message
Dim config As CDO.IConfiguration = msg.Configuration
Dim oFields As ADODB.Fields = config.Fields
Try
msg.From = "[email protected] (管理员)"
msg.To = toEmail
msg.Subject = subject
If htmlEnable = 1 Then
msg.HTMLBody = content & "<br><a href='http://database/index.htm'>点击进行登录</a>"
msg.HTMLBodyPart.Charset = "gb2312"
Else
msg.TextBody = content
msg.BodyPart.Charset = "gb2312"
End If
oFields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2
oFields("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = "admin"
oFields("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = "1234"
oFields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 1
oFields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = "test"
oFields("http://schemas.microsoft.com/cdo/configuration/languagecode").Value = "0x0804"
oFields.Update()
msg.Send()
Return True
Catch ex As Exception
Dim test As String = ex.Message.ToString()
Return False
Finally
msg = Nothing
oFields = Nothing
End Try
End Function
<globalization requestEncoding="GB2312" responseEncoding="GB2312"/>
public static void SendMail(string[] mailaddresses,string title,string body)
{
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.Subject = title;
mail.From = new MailAddress("[email protected]");
foreach (string address in mailaddresses)
{
mail.To.Add(address);
}
mail.IsBodyHtml = true;
mail.Body = body;
mail.BodyEncoding = System.Text.Encoding.GetEncoding("gb2312");
mail.SubjectEncoding = System.Text.Encoding.GetEncoding("gb2312");
mail.Priority = MailPriority.High;
Send(mail);
}
private static void Send(System.Net.Mail.MailMessage mail)
{
SmtpClient sc = new SmtpClient();
sc.Credentials = new NetworkCredential(Config.GetConfigValue("SmtpUserName"), Config.GetConfigValue("SmtpUserPass"));
sc.Host = Config.GetConfigValue("SmtpAddress");
try
{
sc.Send(mail);
}
catch
{
;
}
}
mail.SubjectEncoding = System.Text.Encoding.GetEncoding("gb2312");
msg.HTMLBodyPart.Charset = "gb2312"
msg.BodyPart.Charset = "gb2312"
所以就没有乱码了
subject会出现乱码,乱码表现为问号:??????????
http://topic.csdn.net/u/20080327/14/753ef8e2-ed87-4d8d-a6ab-41ba9b8f49f5.html有的机器行有的不行,不知道产品是否要做登台测试了。
吗
Received: from itd28 (192.168.14.28) by master.test.com (192.168.0.9) with
Microsoft SMTP Server id 8.0.685.24; Thu, 17 Apr 2008 15:58:59 +0800
From: OA??? <[email protected]>
To: <[email protected]>
Subject: ????????????,???????????
Date: Thu, 17 Apr 2008 16:00:22 +0800
Message-ID: <009201c8a061$16367a40$1c0ea8c0@itd28>
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0093_01C8A0A4.245C0430"
X-Mailer: Microsoft CDO for Windows 2000
Thread-Index: AcigYRYZajkamnJGTfSvTUzmBMerFA==
Content-Class: urn:content-classes:message
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1914
Return-Path: [email protected]不乱码的邮件头:
Received: from itd26 (192.168.14.26) by master.test.com (192.168.0.9) with
Microsoft SMTP Server id 8.0.685.24; Thu, 17 Apr 2008 15:54:36 +0800
thread-index: AcigYHOO39VK8PFfQ6Kc6rhPF3yJWg==
Thread-Topic: =?gb2312?B?z9bT0NK7uPbIzs7x0OjSqsT6zeqzyaOsx+u1x8K8z7XNs7340NCy6b+0?=
From: =?gb2312?B?T0G53MDt1LE=?= <[email protected]>
To: <[email protected]>
Subject: =?gb2312?B?z9bT0NK7uPbIzs7x0OjSqsT6zeqzyaOsx+u1x8K8z7XNs7340NCy6b+0?=
Date: Thu, 17 Apr 2008 15:55:49 +0800
Message-ID: <9B6C91A12E3B4BA4AEB0E447E31DBD0C@itd26>
MIME-Version: 1.0
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: 8bit
X-Mailer: Microsoft CDO for Windows 2000
Content-Class: urn:content-classes:message
Importance: normal
Priority: normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3300
Return-Path: [email protected]
改过后的源代码如下:
Imports System.Web
Imports System.Web.Mail
Public Class sendEmail
Function sendMyMail(ByVal toEmail As String, ByVal subject As String, ByVal content As String) As Boolean
Dim mail As New Mail.MailMessage
mail.Subject = subject
mail.To = toEmail
mail.BodyFormat = MailFormat.Html
mail.Body = content & "<br><a href='http://database/index.htm'>点击进行登录</a>"
mail.BodyEncoding = System.Text.Encoding.GetEncoding("gb2312")
mail.Headers.Add("From", "管理员<[email protected]>")
mail.Headers.Add("Content-Type", "text/plain; charset=gb2312")
mail.Headers.Add("Content-Transfer-Encoding", "8bit")
mail.Priority = MailPriority.High
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2)
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin")
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "1234")
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1)
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "master")
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/languagecode", "0x0804")
SmtpMail.SmtpServer = "master"
Try
SmtpMail.Send(mail)
Return True
Catch ex As Exception
Dim temp As String = ex.Message.ToString()
Return False
Finally
mail = Nothing
End Try
SmtpMail.Send(mail)
End Function
End Class