zoukankan      html  css  js  c++  java
  • 在asp.net中使用jmail.net小结

    近来需要开发一个小系统,其中就用到了将系统自动生成的密码发送到客户邮件地址中的问题,以前一直是使用asp+jmail4.4来进行操作的,这次的系统是在windows 2003+asp.net+sql server 2005上进行的,因此就想到了使用jmail.net来进行发送。

    在下载了jmail.net 1.1后,简单的查看了一下例程,就开始动手了,虽然很简单,但还是把过程记录下来,请供大家分享指正。

    将Dimac.JMail.dll和Dimac.JMail.Smtp.dll文件入到bin目录,运行软件自带的smtp.aspx页面,先给自己发送一封邮件,发送成功,在此期间遇到的问题有这么几个:

    一、“An exception occured: 530 Authentication required”,这说明SMTP服务器需要验证,“Authentication:”就需要选择一种验证方式;

    二、“An exception occured: PLAIN is not supported”,验证方式选择为“PLAIN”后,报这个错,这种是因为SMTP服务器不支持PLAIN验证方式引起的,在网上查了一些资料,得知plain验证方式为明文发送验证,login验证方式为BASE64加密文件验证,看来是这个SMTP服务器的安全设置较高,选择使用“login”后就可以了,另:选用了“any”也可以成功,现在还不明白any是不是循环各种验证方式?

        附SMTP验证方式资料:http://hi.baidu.com/%B6%AC%D2%E2%BE%D3/blog/item/a06518fbf646802e4f4aea99.html

    三、“An exception occured: 554 Sender address not allowed for this authenticated session”,因为我在“from”中随手输入的一个地址没有在验证列表中,看来也是服务器的安全限制,必须输入一个合法存在的邮件地址,而且必须与验证用的用户名和密码一致,防止假冒邮件。这个应该是与SMTP服务器有关,与jmail.net本身没有太大关系。

    发送成功后,我准备将它改动一下,方便我在其他页面调用,现将代码分享给大家:

    在app_code中新建一个类,取名为SendMail.vb

    Imports Microsoft.VisualBasic
    Imports System
    Imports Dimac.JMail
    
    Public Class SendMail
        Function SendMail(ByVal SendName As String, ByVal ToEmail As String, ByVal ToName As String, ByVal MailSubject As String, ByVal MailBody As String, ByVal MailHtml As Boolean) As Boolean
    
            Dim message As New Dimac.JMail.Message()
            '发送地址,我这里使用的是一个固定的地址
          message.From.Email = "it@mycompany.com"
            message.From.FullName = SendName
    
            '收件人
            message.To.Add(ToEmail, ToName)
            '主题
            message.Subject = MailSubject
            '字符集,现直接指定为gb2312
            message.Charset = System.Text.Encoding.GetEncoding("GB2312")
            '选择是以html格式还是文本格式发送
            If MailHtml Then
                message.BodyHtml = MailBody
            Else
                message.BodyText = MailBody
            End If
            Try
                'SMTP服务器的验证方式
                Dim selected = [Enum].Parse(GetType(SmtpAuthentication), "Login")
                '使用的是一次发送的方式,也可以将各项分别赋值后发送
              '各参数分别是邮件内容、SMTP服务器地址、SMTP服务端口、主机名(@后面的内容)、验证方式,验证用户名、验证密码
                Smtp.Send(message, "192.168.1.30", 25, "mycompany.com", selected, "it", "it123")
                Return True
            Catch ex As Exception
                'Response.Write(ex.Message)
                Return False
    
            End Try
    
        End Function
    
    End Class
    
    

     SendMail函数各参数的内容分别是:发件人名称、收件人地址、收件人名称、邮件主题、邮件内容、是否使用HTML格式

    新建一个测试页面,调用如下:

    test.aspx

    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="test.aspx.vb" Inherits="test" %>
    
    <!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>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            发件人名称:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
            收件人地址:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br />
            收件人姓名:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br />
            邮件主题:<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox><br />
            邮件内容:<asp:TextBox ID="TextBox1" runat="server" Height="173px" TextMode="MultiLine"
                Width="488px"></asp:TextBox><br />
            HTML格式:<asp:CheckBox ID="chk_html" runat="server" /><br />
            <asp:Button ID="Button1" runat="server" Text="发送" />
        </div>
        </form>
    </body>
    </html>
    
    

    test.aspx.vb

    Imports System
    Imports SendMail
    
    Partial Class test
        Inherits System.Web.UI.Page
    
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim sendmail1 As New SendMail
            sendmail1.SendMail(TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text, TextBox1.Text, chk_html.Checked)
        End Sub
    End Class
    
    

    测试成功,但要注意的是,在测试页中如果选择了使用HTML格式,而且又有HTML代码的话,IIS会报错,说有不安全的字符,这种可以在实际使用中来进行控制或使用POST方式来进行。

    作者:vvian

    出处:http://www.cnblogs.com/vvian/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,非常感谢。

  • 相关阅读:
    struts2在result中使用el表达式碰到的问题
    JSP学习笔记—— jsp中include文件指令乱码的三种解决方案
    SSH整合,applicationContext.xml中配置hibernate映射文件问题
    struts上传文件失败 ContentType not allowed错误解决方法【转】
    mysql5 乱码问题解决方案
    java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决
    JQuery使用on绑定动态生成元素时碰到的问题
    Oracle异常处理
    C#窗口拦截键盘事件
    Oracle中动态SQL详解
  • 原文地址:https://www.cnblogs.com/vvian/p/1837530.html
Copyright © 2011-2022 走看看