【问题标题】:How can I use JavaScript to attach a file to a email?如何使用 JavaScript 将文件附加到电子邮件?
【发布时间】:2011-05-07 11:11:18
【问题描述】:

我正在为我的班级制作一张纸,用来记录他们每天所做的事情。

在本周末,人们需要将文件通过电子邮件发送给他们的老师。

有没有办法使用 JavaScript 自动将当前文件附加到电子邮件中?

谢谢。

编辑:哦,这也必须适用于 IE7 和 Outlook 2007。

【问题讨论】:

    标签: javascript html attachment email


    【解决方案1】:

    有没有办法使用 JavaScript 自动将当前文件附加到电子邮件中?

    不,没有。 JavaScript 完全在浏览器中运行,并且无法访问本地文件。可以使用mailto: 链接启动默认电子邮件客户端,并且可以预先设置主题和邮件正文。但除此之外没有什么。

    【讨论】:

    • +1!并且预设主题和正文不能跨浏览器工作。
    • 哈哈,想象一个普通人在网上冲浪时发送电子邮件的世界。垃圾邮件²
    • 我正在寻找支持这个论点的资源。对于我们开发人员来说,遇到客户不了解 javascript(或从技术上讲是您的浏览器)如何实现此类功能是一个常见问题。您是否有任何您知道的链接可以为我们提供某种法律/标准的东西,声明这实际上是真实的并且应该通过逻辑思维和常识来预期?大声笑。
    • @ColdCerberus 事情发生了一些变化,理论上 JavaScript 可以现在在某些严格控制的条件下读取用户文件,但 RFC 中似乎有一条明确规定的规则,禁止附加他们到 mailto 链接,请参阅此 stackoverflow.com/questions/14228703/… 的已接受答案
    • @ColdCerberus 以下是 File API 的简要说明:stackoverflow.com/questions/371875/… 但 RFC 似乎很清楚什么可以和不可以进入 mailto: 电子邮件,即使您可以访问文件的内容。 可能可行的是使用 Ajax 请求将所选文件的数据上传到 Web 服务器并从那里发送电子邮件。如果这不是一个选项,并且必须通过适用于任何客户端的本地 mailto: 链接发送,那么它就是不可行的。
    【解决方案2】:

    实际上,如果您希望它与他所描述的 MS 技术一起使用,您可以。您可以使用 ActiveX 与 Outlook 交互。请参阅下面的问题。

    Problem creating an email with an attachment in Javascript

    【讨论】:

    • +1 不错!它是专有技术,在大多数情况下适合日常公共使用,但它可能适用于 OP。 (编辑:我没有选票了。好吧,然后是虚拟 +1 :)
    • @Pekka:我会为你做的 ;)
    • 谢谢,这看起来对我有用。我明天去试试,看看有没有用。再次感谢。
    【解决方案3】:

    试试这个代码。首先,您必须在 Google Cloud Console 中创建一个应用程序并从库中启用 Gmail API。获取您的应用程序的凭据。为此,单击凭据并代替授权重定向 URI 保留此链接 https://developers.google.com/oauthplayground并保存它。接下来在另一个选项卡中打开此链接https://developers.google.com/oauthplayground/ 单击右侧的设置符号。然后在复选框上打勾(即,使用您自己的 OAuth 凭据)您必须提供您的 clientId 和 clientSecret。并且同时在左侧有一个带有占位符的文本框,例如 Input Your Own Scopes 那里保留此链接https://mail.google.com/ 并单击 Authorize APIs 然后单击 Exchange authentication code for tokens 然后您将获得您的 refreshToken 和 accessToken 保留这两个您的代码。希望对您有所帮助..

    const nodemailer=require('nodemailer');
    const xoauth2=require('xoauth2');
    var fs=require('fs');
    var transporter=nodemailer.createTransport({
    service:'gmail',
    auth:{
        type: 'OAuth2',
        user:'Sender Mail',
    clientId:'Your_clientId',//get from Google Cloud Console
    clientSecret:'Your clientSecret',//get from Google Cloud Console
    refreshToken:'Your refreshToken',//get from  https://developers.google.com/oauthplayground
    accessToken:'Tor accessToken'//get from  https://developers.google.com/oauthplayground
    },
    });
    fs.readFile("filePath",function(err,data){
    var mailOptions={
    from:' <Sender mail>',
    to:'receiver mail',
    subject:'Sample mail',
    text:'Hello!!!!!!!!!!!!!',
    attachments:[
    {
        'filename':'filename.extension',//metion the filename with extension
         'content': data,
         'contentType':'application/type'//type indicates file type like pdf,jpg,...
    }]
    }
    transporter.sendMail(mailOptions,function(err,res){
    if(err){
        console.log('Error');
    }
    else{
    console.log('Email Sent');
    }
    })
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-29
      • 2020-01-14
      • 1970-01-01
      • 2014-06-25
      • 2010-12-07
      • 2017-08-21
      • 2012-12-14
      • 2021-07-22
      相关资源
      最近更新 更多