使用 luasocket smtp 和 ssl 发送电子邮件

2024-06-20

我一直在尝试使用帖子中描述的代码发送电子邮件:

lua使用gmail账户发送邮件 https://stackoverflow.com/questions/11070623/lua-send-mail-with-gmail-account

代码由米哈尔·科特曼 https://stackoverflow.com/users/221509/michal-kottman下面重复:

-- Michal Kottman, 2011, public domain
local socket = require 'socket'
local smtp = require 'socket.smtp'
local ssl = require 'ssl'
local https = require 'ssl.https'
local ltn12 = require 'ltn12'

function sslCreate()
    local sock = socket.tcp()
    return setmetatable({
        connect = function(_, host, port)
            local r, e = sock:connect(host, port)
            if not r then return r, e end
            sock = ssl.wrap(sock, {mode='client', protocol='tlsv1'})
            return sock:dohandshake()
        end
    }, {
        __index = function(t,n)
            return function(_, ...)
                return sock[n](sock, ...)
            end
        end
    })
end

function sendMessage(subject, body)
    local msg = {
        headers = {
            to = 'Your Target <target email>',
            subject = subject
        },
        body = body
    }

    local ok, err = smtp.send {
        from = '<your email>',
        rcpt = '<target email>',
        source = smtp.message(msg),
        user = 'username',
        password = 'password',
        server = 'smtp.gmail.com',
        port = 465,
        create = sslCreate
    }
    if not ok then
        print("Mail send failed", err) -- better error handling required
    end
end

如果我从 gmail 发送一些东西,该代码就可以正常工作。但是当我使用 godaddy smtp 服务器 smtpout.secureserver.net (相同端口)时,它无法发送消息。我刚刚收到错误代码 550。 请任何人帮我弄清楚如何使这项工作有效。

Thanks.


多亏了这篇文章,它才有效:

尝试通过Python向Google发送电子邮件,电子邮件被拒绝 https://stackoverflow.com/questions/25002795/trying-to-send-email-to-google-through-godaddy-in-python-email-being-denied

我刚刚更改了代码以在 headers 表中添加 from 字段,如下所示:

-- Michal Kottman, 2011, public domain
local socket = require 'socket'
local smtp = require 'socket.smtp'
local ssl = require 'ssl'
local https = require 'ssl.https'
local ltn12 = require 'ltn12'

function sslCreate()
    local sock = socket.tcp()
    return setmetatable({
        connect = function(_, host, port)
            local r, e = sock:connect(host, port)
            if not r then return r, e end
            sock = ssl.wrap(sock, {mode='client', protocol='tlsv1'})
            return sock:dohandshake()
        end
    }, {
        __index = function(t,n)
            return function(_, ...)
                return sock[n](sock, ...)
            end
        end
    })
end

function sendMessage(subject, body)
    local msg = {
        headers = {
            from = "<your email>",
            to = 'Your Target <target email>',
            subject = subject
        },
        body = body
    }

    local ok, err = smtp.send {
        from = '<your email>',
        rcpt = '<target email>',
        source = smtp.message(msg),
        user = 'username',
        password = 'password',
        server = 'smtp.gmail.com',
        port = 465,
        create = sslCreate
    }
    if not ok then
        print("Mail send failed", err) -- better error handling required
    end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 luasocket smtp 和 ssl 发送电子邮件 的相关文章

  • 未找到证书管理器证书并且未创建挑战

    我跟着https docs cert manager io en venafi tutorials quick start index html https docs cert manager io en venafi tutorials
  • SSL 和会话劫持/固定

    快问 SSL 是否完全防止会话劫持 固定 谢谢 不可以 例如 在以下情况下可能会发生劫持 被黑客入侵的 CA 根签署无效证书 该证书可用于发起中间人攻击 被黑客攻击的域名所有者电子邮件收件箱使黑客有可能购买经过域名验证的证书 错误的密钥策略
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • 通过电子邮件发送文本文件附件

    我正在尝试附加一个文本文件以便通过电子邮件发送 但每当我打开电子邮件应用程序时 它都会说该文件不存在 请帮助 Intent i new Intent Intent ACTION SEND i setType text plain i put
  • SSL 与 Ruby on Rails

    我需要做什么才能让我的 Ruby on Rails 应用程序获得使用 https 的流量 我安装了证书 如果我在访问网站时在地址栏中手动输入 https 则会出现小锁图标 但只需在浏览器中手动访问 www example app com 即
  • AIX:IBM Java:java.net.SocketException:连接超时:可能是由于地址无效

    当尝试与我们的服务器建立 SSL 连接时 我们在 IBM AIX 上经常看到以下异常 java net SocketException Socket closed at com sun net ssl internal ssl SSLSoc
  • 发送电子邮件属于应用程序的表示层还是业务层?

    我正在尝试找出在我的 Asp net MVC 应用程序中放置发送电子邮件的代码的最佳区域 现在 我的应用程序设置在 2 个 VS 项目中 将业务层与表示层分开 我正在尝试设置一种情况 当用户重置密码时 业务逻辑更改密码后 服务器将向用户发送
  • Spring MVC 中未发现异常但邮件未发送

    我是新来的spring MVC我在春季发送电子邮件时遇到问题 不会出现异常 但邮件不会发送 我的applicationContext xml
  • 通过 HTTPS/SSL 的 Java 客户端证书

    我正在使用 Java 6 并尝试创建一个HttpsURLConnection使用客户端证书针对远程服务器 服务器使用自签名根证书 并要求提供受密码保护的客户端证书 我已将服务器根证书和客户端证书添加到我在其中找到的默认 java 密钥库中
  • Puppet 4.3.2 客户端节点无法通过 SSL 连接到 Puppet 服务器

    我刚刚按照以下方式对我的所有 Puppet 认证进行了彻底的再生官方文档中的指南 https docs puppetlabs com puppet 4 3 reference ssl regenerate certificates html
  • 通过 https 的客户端证书身份验证失败

    我正在尝试使用 https 客户端身份验证工作这个示例代码 https stackoverflow com a 4464435 789671在 Python 2 7 中 不幸的是 客户端脚本似乎没有正确验证 我无法找出原因 我生成了一个测试
  • 如何在 Android 中发送电子邮件? [复制]

    这个问题在这里已经有答案了 如何在 Android 上用代码发送一封简单的电子邮件 Intent sendIntent sendIntent new Intent Intent ACTION SEND sendIntent putExtra
  • 为什么我的邮件发件人与我的发件人标头不同是可以接受的?

    关于 SPF 有件事一直困扰着我 为什么它不验证 From 标头 据我了解 SMTP 服务器将 SPF 验证 MAIL FROM 或 ENVELOPE FROM SMTP 命令期间提供的主机名 我的示例是从 telnet ing 到 gma
  • Facebook 电子邮件始终通过 FQL 和 RestFB 返回 null

    我正在尝试将朋友页面转换为粉丝页面 大多数企业都错误地创建了朋友页面 并尝试向朋友列表中的每个人发送有关此举的电子邮件 我试过了 FQL 从用户中选择电子邮件 其中 uid xxxx 创建群组 不适合 5000 个朋友页面 Restfb C
  • SMTP 点填充..何时何地进行?

    我在传输电子邮件时发现了有关点填充的相互矛盾的信息 如果该行包含单个点 则填充一个点 以避免过早终止 在每行中填充一个点 统计数据以点开头 仅将点填充到 1 以及引用可打印消息部分的每一行部分 谁能澄清一下吗 根据 SMTP 标准 RFC
  • Hotmail 混淆了编码的 URL 参数

    我们有一个系统 可以定期发送带有链接的电子邮件 其中许多包含 URL 编码参数 如下所示 href http www mydomain com login aspx returnurl http 3A 2F 2Fwww mydomain c
  • 与 Postgres 的 TCP 连接安全吗?需要 SSL 吗?

    早上好 我正在浏览 Postgresql 配置文件 最近注意到有一个ssl选项 我想知道什么时候需要这样做 假设您有一个应用程序服务器和一个数据库服务器 不在专用网络内运行 如果用户尝试登录 如果未启用 SSL 应用程序服务器在查找用户密码
  • python 日志记录:当级别 >= ERROR 时,通过电子邮件将整个日志文件作为附件发送

    我的日志系统有一些处理程序 日志文件 INFO 电子邮件处理程序 gt ERROR 和用于可选调试的流处理程序 当发生错误 异常 关键消息时 我希望电子邮件处理程序将日志文件从文件处理程序附加到错误电子邮件 import logging d
  • 在本地主机上设置 (https) SSL 以进行流星开发

    如何创建自签名 SSL 证书以在 mac 10 9 上的本地服务器上使用 我需要我的本地主机作为https localhost 我正在使用 linkedin API 这里解释了需要本地主机上的 ssl 的功能 https developer
  • 如何找到我使用的 Lua 版本?

    我使用 Lua Glider 2 Corona SDK 最新版本开发应用程序 我怎样才能找到它使用哪个版本的Lua 谢谢 您可以使用全局变量 VERSION http www lua org manual 5 2 manual html p

随机推荐