• 【nodemailer】 初试


    nodemailer

    nodemailer 是什么?

    简单的讲nodemailer就是用来发送邮件的。最近的一个项目需要向客户的注册邮箱发送验证连接,研究了一下.
    刚开始我以为nodemailer还可以用来接收邮件,看了好一会儿文档都没发现怎么接收邮件,结果弄错了

    nodemailer 有哪些功能

    • 在支持纯文本的基础上还支持发送html格式的邮件内容
    • 支持markdown语法编辑的邮件
    • 支持发送文件附件
    • 支持多收件人,支持抄送,密送

    nodemailer的插件

    内嵌的插件

    • nodemailer-smtp-transport 使用SMTP发送邮件
      使用该插件可以配置SMTP服务,很多手机上都有一个接受邮件服务的APP,里面可以设置多个邮件账户,然后该APP就可以代你收发邮件,不过前提是你的账户开通了SMTP服务。如QQ邮箱可以 设置->账户里面设置开通SMTP服务
    • nodemailer-direct-transport 直接发送邮件
      虽然是直接发,看文档上的例子,连密码都没设置就发了,确实我用的网易邮箱不用填密码就发了,不过使用QQ邮箱就报错。不过对于这点不用深究

    作为依赖安装的插件

    • nodemailer-smtp-pool nodemailer-smtp-transport的升级版,使用了连接池
    • nodemailer-sendmail-transport该插件使得nodemailer可以通过命令行发送邮件
    • 官网里面介绍的另外几个是为和外部的API接口对接而开发的,用不到的话就不用在意*

    可选的插件

    我的测试

    //Created by yyrdl on 2015/10/2.
    var nodemailer = require('nodemailer');
    var smtpPool=require("nodemailer-smtp-pool");
    var tool=require("./readFile");
    var options={
        "service":"QQ",
        "auth":{
            "user":"xxxxx@qq.com",//你的账号
            "pass":"xxxxx"//你账号的密码
        },
        "maxConnections":10,//最大连接数
        "secure":true //use SSL
    };
    var transporter = nodemailer.createTransport(smtpPool(options)); 
    
    tool.readFile("./index.html",function(err,res){
        if(err){
    
        }else{
            transporter.sendMail({
                from:'xxxxx@qq.com',//这个应该和上面那个一致
                to: 'bbbbbbb@163.com',
                subject: 'hello',
                html: res//邮件是html格式,至于markdown或者mustache,或者Express Handlebars,去看相关文档即可
            },function(err,res){
                if(err){
                    console.log(err);
                }else{
                    console.log(res);
                }
            });
        }
    });
    

    由于可以发送html格式的内容,猜测邮件的显示框是一个iframe或者frame ,那这样我是不是可以引用外部样式了呢?比如说bootstrap _ ,好吧试试
    PS:options中的service可选值可以参考Nodemailer Well-Known

     <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <meta charset="utf-8"/>
        <link rel="stylesheet" type="text/css" href="http://libs.baidu.com/bootstrap/3.3.0/css/bootstrap.min.css"/>
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
        <script src="http://libs.baidu.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
        <style>
          .s_c{
              margin-top:20px;
          }
        </style>
        <script>
            setTimeout(function(){
                alert("k");
            },3000);
        </script>
    </head>
    <body>
    
       <div class="container s_c" >
           <h1>Example Heading <span class="label label-default">Label</span></h1>
       </div>
    </body>
    </html>
    

    然而结果却是这样的

    第一文字并没有居中,而且Label也不是浅色,所以猜测应该是不可以引入外部文件的,标签页禁用,并且禁用javascript,然而使用style添加的样式还是可以的

    ---记录,分享。转载请注明出处!

  • 相关阅读:
    ASP.NET CORE 2.0 模板 (Admin LTE)
    MVC5+EF6 完整教程17--升级到EFCore2.0
    MVC 5 + EF6 完整教程16 -- 控制器详解
    MVC 5 + EF6 完整教程15 -- 使用DI进行解耦
    MVC 5 + EF6 入门完整教程14 -- 动态生成面包屑导航
    MVC5+EF6 入门完整教程13 -- 动态生成多级菜单
    MVC5+EF6 入门完整教程12--灵活控制Action权限
    MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用
    LeetCode 504. Base 7
    LeetCode 594. Longest Harmonious Subsequence
  • 原文地址:https://www.cnblogs.com/yyrdl/p/4852071.html
Copyright © 2020-2023  润新知