• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    在Ruby中利用Net::SMTP类发送电子邮件的教程

    简单邮件传输协议(SMTP)发送电子邮件及路由的e-mail邮件服务器之间的协议处理。

    Ruby 提供 Net::SMTP 类的简单邮件传输协议(SMTP)客户端的连接,并提供了两个新的方法:new 和 start.

        new 带两个参数:

    1.         server name 默认为 localhost
    2.         port number  默认为熟知的 25

        start 方法带有以下这些参数:

    SMTP对象有一个实例方法调用sendmail,后者通常会被用来做邮寄消息的工作。它有三个参数:

    例子:

    下面是一个简单使用Ruby脚本的方法来发送一个电子邮件。试一次看看吧:

    require 'net/smtp'
    
    message = MESSAGE_END
    From: Private Person me@fromdomain.com>
    To: A Test User test@todomain.com>
    Subject: SMTP e-mail test
    
    This is a test e-mail message.
    MESSAGE_END
    
    Net::SMTP.start('localhost') do |smtp|
     smtp.send_message message, 'me@fromdomain.com', 
                   'test@todomain.com'
    end
    
    

    在这里已经放置了一个基本的电子邮件消息,使用文件,在这里同时注意正确格式化标题。一封邮件需要发件人,收件人,主题头,从电子邮件的主体有一个空白行分隔。

    随着消息要发送邮件使用Net::SMTP连接到本地机器上的SMTP服务器,然后使用 send_message  方法,从地址,目的地址作为参数(即使地址电子邮件本身范围内,这些并非总是用来将邮件路由)。

    如果还没有在机器上运行一个SMTP服务器,可以使用的Net::SMTP远程SMTP服务器进行通信。除非使用一个webmail服务(如Hotmail或雅虎邮件),电子邮件提供商将提供外发邮件服务器的细节,可以提Net::SMTP,具体如下:

    Net::SMTP.start('mail.your-domain.com')
    
    

    这行代码连接到SMTP服务器mail.your-domain.com 端口25。,而无需使用任何用户名或密码。不过,如果需要的话可以指定端口号或其他参数等。例如:

    Net::SMTP.start('mail.your-domain.com', 
            25, 
            'localhost', 
            'username', 'password' :plain)
    
    

    这个例子连接mail.your-domain.com到SMTP服务器使用的用户名和密码以纯文本格式。它标识为localhost客户端的主机名。
    使用Ruby发送HTML电子邮件:

    当想要发送文本消息,Ruby所有内容将被视为简单的文本。即使会在短信中包含HTML标记,它会显示简单的文本和HTML标记将不会格式化HTML语法。但是Ruby的 Net::SMTP 提供了实际的HTML邮件发送HTML消息的选项。

    在发送电子邮件消息时,可以指定一个MIME版本,内容类型和字符集发送HTML电子邮件。
    例如:

    下面的例子作为电子邮件发送HTML内容。试一次看看吧:

    require 'net/smtp'
    
    message = MESSAGE_END
    From: Private Person me@fromdomain.com>
    To: A Test User test@todomain.com>
    MIME-Version: 1.0
    Content-type: text/html
    Subject: SMTP e-mail test
    
    This is an e-mail message to be sent in HTML format
    
    b>This is HTML message./b>
    h1>This is headline./h1>
    MESSAGE_END
    
    Net::SMTP.start('localhost') do |smtp|
     smtp.send_message message, 'me@fromdomain.com', 
                   'test@todomain.com'
    end
    
    

    作为电子邮件的附件发送:

    混合内容发送一封电子邮件,要求设置Content-type头为 multipart/mixed。然后,文本和附件部分可以指定 boundaries 范围内。

    两个连字符后跟一个唯一的编号,不能出现在电子邮件的消息部分的边界开始。最后一个边界表示电子邮件的最后一节的结尾也必须有两个连字符。

    附加文件使用 pack("m") 函数来base64编码传输之前进行编码。
    例子:

    下面的例子将文件 /tmp/test.txt 作为附件发送。试一次看看吧:

    require 'net/smtp'
    
    filename = "/tmp/test.txt"
    # Read a file and encode it into base64 format
    filecontent = File.read(filename)
    encodedcontent = [filecontent].pack("m")  # base64
    
    marker = "AUNIQUEMARKER"
    
    body =EOF
    This is a test email to send an attachement.
    EOF
    
    # Define the main headers.
    part1 =EOF
    From: Private Person me@fromdomain.net>
    To: A Test User test@todmain.com>
    Subject: Sending Attachement
    MIME-Version: 1.0
    Content-Type: multipart/mixed; boundary=#{marker}
    --#{marker}
    EOF
    
    # Define the message action
    part2 =EOF
    Content-Type: text/plain
    Content-Transfer-Encoding:8bit
    
    #{body}
    --#{marker}
    EOF
    
    # Define the attachment section
    part3 =EOF
    Content-Type: multipart/mixed; name=\"#{filename}\"
    Content-Transfer-Encoding:base64
    Content-Disposition: attachment; filename="#{filename}"
    
    #{encodedcontent}
    --#{marker}--
    EOF
    
    mailtext = part1 + part2 + part3
    
    # Let's put our code in safe area
    begin 
     Net::SMTP.start('localhost') do |smtp|
       smtp.sendmail(mailtext, 'me@fromdomain.net',
                 ['test@todmain.com'])
     end
    rescue Exception => e 
     print "Exception occured: " + e 
    end 
    
    

    注意:可以指定多个目的地内部数组,但他们需要用逗号分隔。

    您可能感兴趣的文章:
    • 使用Ruby来处理JSON的简单教程
    • 初步讲解Ruby编程中的多线程
    • 使用Ruby编写发送邮件的程序的简单教程
    上一篇:用Ruby进行CGI编程的入门指引
    下一篇:Ruby中的Socket编程简单入门
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    在Ruby中利用Net::SMTP类发送电子邮件的教程 在,Ruby,中,利用,Net,SMTP,类,