Erlang 发送邮件相关问题

  1. 协议相关

    一封邮件的发送的协议格式如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    "HELO XXX\r\n"
    "AUTH LOGIN \r\r"
    "$Account\r\n" ($Account为账号需要经过base64 encoding)
    "$Password\r\n" ($Password 为密码需要经过base64 encoding)
    "DATA\r\n"
    "From: < $Account> \r\n" ($Account 为发送者的email
    "To : < $ToEmails >\r\n" ($ToEmails 为发送者的列表)
    "Subject: =?UTF-8?B? $Tittle ?=\r\n"($Tittle 是邮件标题经过base64 编码后的字符串,这样做的目的是为了避免中文乱码)
    "MIME-version: 1.0\r\n"
    "Content-Type:text/html;charset=UTF-8\r\n\r\n"
    "$DATA\r\n\r\n" (正文内容)
    "\r\n.\r\n"(结束)
    "QUIT\r\n"(退出)

2.乱码问题

Erlang 处理中文,唯一办法就是转换成utf-8 ,所以在smtp协议里面就需要指明对应的编码,所以标题需要改为"Subject: =?UTF-8?B? $Tittle ?=\r\n"($Tittle 是邮件标题经过base64编码后的字符串,这样做的目的是为了避免中文乱码) , 正文部分需要指明charset :"Content-Type:text/html;charset=UTF-8\r\n\r\n"

  1. 相关资料