我用CreateUserWizard控件做了一个注册页面,新建用户和发送邮件都正常。就是发送出来的邮件里面的中文都是乱码。
我试改了文件的保存方式,用gb2312和utf8,也行不。
邮件内容用TXT和HTML两种格式也试了,还是一样,主体用<% UserName %>引用的用户名,如果是中文,在收到的邮件里也是乱码。
看来和邮件保存时的编码没有关系。
难道是发送邮件类的问题?
那位老师会麻烦告诉我下啊
先谢谢拉。
我用的是(VS2005 中文专业版)邮件发送服务器和接收邮箱都换过试了,不行。
web.config<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <appSettings/>
  <connectionStrings/>
  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="Login.aspx" />
    </authentication>
  </system.web>
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="network">
        <network host="****" port="25" userName="*****" password="*****" />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>
////////////////////////////////////////////////////////////////////////////////////////
PasswordRecovery.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PasswordRecovery.aspx.cs"
    Inherits="PasswordRecovery" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>示例16-1</title>
    <link id="InstanceStyle" href="StyleSheet.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <fieldset style="width: 230px">
                <legend class="mainTitle">重置密码</legend>
                <asp:PasswordRecovery ID="PasswordRecovery1" runat="server" BackColor="#F7F7DE" BorderColor="#CCCC99"
                    BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="10pt">
                    <MailDefinition Subject="mima" From="****" BodyFileName="~/mima.txt">
                    </MailDefinition>
                    <TitleTextStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
                </asp:PasswordRecovery>
            </fieldset>
        </div>
    </form>
</body>
</html>//////////////////////////////////////////////////////////////////////////////////
mima.txt您已经选择重置用户密码。当前,您的用户名是: <% UserName %>,密码是: <% Password %>

解决方案 »

  1.   

    webconfig:<globalization requestEncoding="GB2312" responseEncoding="GB2312"/>
      

  2.   

    是不是微软对这个简化的类没有考虑多语的支持啊?
    是不是可以考虑用SendingMail事件,在其中用自己的代码发邮件?至少我们可以控制邮件的编码。而MailDefinition只有那么几项可以设置,出了问题都不知道找哪儿。我还没有试过,这样应该可以吧
      

  3.   

    我之前试过,看一下对你有没有用:
    using System.Net.Mail;... MailMessage MailMsg = new MailMessage();//设置MAIL其他的一些属性
    MailMsg.SubjectEncoding = Encoding.GetEncoding("GB2312");
    MailMsg.BodyEncoding = Encoding.GetEncoding("GB2312");
    MailMsg.IsBodyHtml = true;
    MailMsg.Priority = MailPriority.Normal;
      

  4.   

    我想用MailMessage当然是没有问题的,可是难道这个控件自还的功能真的不能发中文吗?好 了几本asp.net的书,也没有看到有这方面的问题,怀疑他们那些书中的事例都有没有自己试过?????
      

  5.   

    多谢    gfylj(柯南)  帮忙~你的方法很好,我已经调试成功
    代码和大家分享一下
    邮件发送函数:
     Sub SendSMTPEMail(ByVal strSmtpServer As String, ByVal strFrom As String, ByVal strFromPass As String, ByVal strto As String, ByVal strSubject As String, ByVal strBody As String)
            Dim clint As System.Net.Mail.SmtpClient = New SmtpClient(strSmtpServer)
            clint.UseDefaultCredentials = False
            clint.Credentials = New System.Net.NetworkCredential(strFrom, strFromPass)
            clint.DeliveryMethod = SmtpDeliveryMethod.Network
            Dim message As System.Net.Mail.MailMessage = New MailMessage(strFrom, strto, strSubject, strBody)
            message.SubjectEncoding = Encoding.GetEncoding("GB2312")
            message.BodyEncoding = Encoding.GetEncoding("GB2312")
            message.IsBodyHtml = True
            message.Priority = MailPriority.Normal
            message.IsBodyHtml = True
            clint.Send(message)
        End Sub
    调用方法:
     SendSMTPEMail("发件服务器", "发件箱地址", "密码", "收件箱地址", "这是标题", "这是内容")