首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我需要创建一个发送电子邮件的函数,为什么当我在main中调用它以确认它是否已发送时,它显示为null?

当您在main函数中调用发送电子邮件的函数并确认是否已发送时,它显示为null的原因可能是因为函数在发送电子邮件之前还没有完成执行,或者在发送电子邮件的过程中出现了错误。

要解决这个问题,您可以采取以下几个步骤:

  1. 确保发送电子邮件的函数已经正确实现,并且在函数内部没有任何错误。您可以检查函数的代码,确保它没有任何语法错误或逻辑错误。
  2. 确保在调用发送电子邮件的函数之前,已经正确初始化了相关的变量和对象。例如,您可能需要确保已经正确设置了电子邮件服务器的连接信息、收件人地址、邮件内容等。
  3. 在发送电子邮件的函数中,您可以使用一些调试技术来跟踪函数的执行过程。例如,您可以在函数中添加一些日志输出,以便在函数执行时查看相关的变量值和执行状态。这样可以帮助您确定函数是否成功发送了电子邮件。
  4. 如果您的发送电子邮件的函数是异步执行的,即它在后台线程中发送电子邮件并立即返回,那么在main函数中调用它后立即检查发送状态可能会导致返回null。在这种情况下,您可以使用回调函数或者Promise等机制来获取发送状态,并在发送完成后再进行确认。

总之,要解决发送电子邮件函数返回null的问题,您需要仔细检查函数的实现、变量的初始化和调用方式,并使用适当的调试技术来跟踪函数的执行过程。如果问题仍然存在,您可能需要进一步分析函数的代码和相关的上下文环境,以找出问题所在并进行修复。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

带你认识 flask 后台作业

阻止用户同时启动两个或多个相同类型任务,因此启动任务之前,可以使用此方法来确定前一个任务是否还在运行 09 利用 RQ 任务发送电子邮件 不要认为本节偏离主题,在上面说过,当后台完成任务完成...第十章中生成电子邮件功能需要通过两种方式进行扩展。首先,需要添加对文件附件支持,刹车可以附加JSON文件。串行,send_email()函数总是使用后台线程初始化发送电子邮件。...当我要从后台任务发送电子邮件(已经是初步了),基于线程二级后台任务没有什么意义,所以我需要同时支持同步和异步电子邮件发送。...媒体类型定义了这种附件类型,这有助于电子邮件读者适当地渲染。例如,如果您发送image/png媒体类型,则电子邮件阅读器会知道该附件是一个图像,在这种情况下,它可以显示。...*args 如电子邮件同步发送需要就是,当sync是True时候恢复成调用mail.send(msg) 10 任务助手 尽管我上面使用example()任务是一个简单独立函数,但添加用户动态函数需要应用具有的某些功能

2.9K10

第五章-处理多窗口 | Electron实战

接下来,我们创建一个函数来管理单个窗口生命周期。在这之后,我们修改在第4章创建函数,以提示用户选择一个文件并打开它以指向正确窗口。...Set是唯一元素集合;数组可以有重复值。选择使用set而不是数组,因为这样更容易删除元素。这个清单显示了如何用JavaScript创建一个Set。 列表5.1 创建一个跟踪新窗口集合: ....Set移除引用 newWindow = null; }); windows.add(newWindow); //将窗口添加到打开设置窗口 return newWindow...图5.3 要确定要将文件内容发送到那个窗口,渲染器进程调用getFileFromUser()主进程通信必须发送对自身引用。...我们只有一个窗口,无法创建其他窗口。本节,我们只允许应用程序macOS中保持打开状态。默认情况下,当Electron触发window-all-closed事件,它将退出应用程序。

4.2K21
  • 如何在Ubuntu 16.04上安装和配置Postfix作为仅发送SMTP服务器

    本教程,我们将安装和配置Postfix,使仅可以用于本地应用程序发送电子邮件 - 即安装在Postfix所在同一服务器上电子邮件。 你为什么想这么做?...但是,如果您管理安装需要发送电子邮件通知应用程序云服务器,则运行本地仅发送SMTP服务器是使用第三方电子邮件服务提供商或运行完整SMTP服务器良好替代方案。...课程准备 要学习本教程,您需要一个Ubuntu 16.04 腾讯CVM设置了Ubuntu 16.04初始设置,包括创建一个sudo非root用户,没有服务器同学可以在这里购买,不过个人更推荐您使用免费腾讯云开发者实验室进行试验...您可以通过命令提示符下键入hostname来验证服务器主机名。输出应该与您在创建腾讯CVM给出名称相匹配。 第1步 - 安装Postfix 在此步骤,您将学习如何安装Postfix。...这是本教程推荐选项,请按TAB,然后按ENTER。 之后,您将获得另一个窗口,就像下一个图像窗口一样。该系统邮件名称应该是一样,你分配给服务器,当你创造名字。

    3.9K00

    带你认识 flask 邮件发送

    现在让我们将电子邮件整合到应用。 03 简单电子邮件框架 将从编写一个发送电子邮件帮助函数开始,这个函数基本上是上一节shell函数通用版本。...你可能会注意到,即使用户提供电子邮件不存在,也会显示闪现消息,这样的话,客户端就不能用这个表单来判断一个给定用户是否注册。...为了使令牌安全,需要提供一个秘密密钥用于创建加密签名。在这个例子使用了字符串'my-secret',但是应用将使用配置SECRET_KEY。...这个方法需要一个令牌,并尝试通过调用PyJWTjwt.decode()函数来解码。如果令牌不能被验证或已过期,将会引发异常,在这种情况下,我会捕获它以防止出现错误,然后将None返回给调用者。...你可能预期只有msg参数会被发送到线程,但正如你代码中所看到那样,也传入了应用实例。 使用线程需要牢记Flask一个重要设计方面。 Flask使用上下文来避免必须跨函数传递参数。

    1.8K20

    如何在Debian 9上安装和配置Postfix作为仅发送SMTP服务器

    本教程,您将安装和配置Postfix,以便它可以仅用于本地应用程序发送电子邮件 - 即与Postfix安装在同一服务器上电子邮件。 你为什么想这么做?...但是,如果您管理安装需要发送电子邮件通知应用程序云服务器,则运行本地仅发送SMTP服务器是使用第三方电子邮件服务提供商或运行完整SMTP良好替代方案服务器。...您可以通过命令提示符下键入hostname来验证服务器主机名。输出应与创建服务器服务器命名名称相匹配。 第1步 - 安装Postfix 在此步骤,您将学习如何安装Postfix。...这是本教程推荐选项,请按TAB,然后按ENTER。 之后,您将获得另一个窗口,就像下一个图像窗口一样。该系统邮件名称应该是一样,你分配给服务器,当你创造名字。...如果显示子域subdomain.example.com,请将其更改为just example.com。完成后,按TAB,然后ENTER。 您现在安装Postfix,并准备修改其配置设置。

    3.7K74

    LinuxSOCKET编程详解

    套接字设计总体思路是,单个系统调用就可以创建任何套接字,因为套接字是相当笼统。一旦套接字创建后,应用程序还需要调用其他函数来指定具体细节。...当我调用socket创建一个socket,返回socket描述字存在于协议族(address family,AF_XXX)空间中,但没有一个具体地址。...这就是为什么通常服务器端listen之前会调用bind(),而客户端就不会调用,而是connect()由系统随机生成一个。...内核每个由服务器进程接受客户连接创建一个连接socket描述字,当服务器完成了对某个客户服务,相应连接socket描述字就被关闭。 自然要问是:为什么要有两种套接字?...这导致TCP也发送一个FIN N; 接收到这个FIN发送端TCP对进行确认。 这样每个方向上都有一个FIN和ACK。 1.为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

    8.3K10

    RabbitMq 笔记,一篇文章入门

    } } 消息应答 为什么要有这个 为了保证消息发送过程不丢失,rabbitmq 引入消息应答机制,消息应答就是:消费者接 收到消息并且处理该消息之后,告诉 rabbitmq 已经处理了...默认情况下 RabbitMQ 退出或由于某种原因崩溃忽视队列 和消息,除非告知它不要这样做。确保消息不会丢失需要做两件事:我们需要将队列和消息都标 记为持久化。...发布确认 我们之前为了消息不丢失,要求了队列持久化,消息持久化,但是消息持久化到磁盘之前,rabbitmq宕机了,咋办,消息还是会丢失,所以我们需要第三个,就是消息确保到硬盘时候,返回给发送一个确认机制...发布确认策略 1 开启发布确认方法 发布确认默认是没有开启,如果要开启需要调用方法 confirmSelect,每当你要想使用发布确认,都需要在 channel 上调用该方法(发送端) 单个确认发布...: 用户商城下单成功并点击去支付后指定时 间未支付自动失效 延迟队列 延时队列,队列内部是有序,最重要特性就体现在延时属性上,延时队列元素是希望 指定时间到了以后或之前取出和处理

    69730

    使用Postfix,Dovecot和MySQL发送电子邮件

    如果使用不同形式防火墙,请确认没有阻止任何所需端口。 注意:本指南中步骤需要root权限。请务必以root身份或使用sudo前缀运行以下步骤。有关权限更多信息,请参阅我们用户和组指南。...替换email1@example.com添加到表一个电子邮件地址。...本节,配置Dovecot以强制用户连接使用SSL,以便其密码永远不会以纯文本形式发送到服务器。...示例,我们正在创建一个电子邮件地址,以便newdomain.com在上一节添加。 验证是否添加新电子邮件地址。...示例,我们正在创建一个电子邮件地址,以便newdomain.com在上一节添加。 您可以创建一个“全能”别名,该别名将转发发送到匹配域所有电子邮件,这些电子邮件没有匹配别名或用户。

    3.8K30

    如何在Ubuntu 16.04上安装和配置NATS

    我们还将创建一个基本服务器过载警告系统,该系统服务器负载过高发送电子邮件,并将gnatsd其用作其消息代理。 准备 要完成本教程,您需要一个Ubuntu 16.04服务器。...负责启动启动服务,根据需要重新启动它们,并在系统关闭以受控方式停止它们。 我们需要创建一个 服务配置,以定义应该如何以及何时启动NATS服务。...我们需要运行最后一个命令以使我们NATS服务器启动启动: sudo systemctl enable nats 您将看到以下输出,确认安装该服务: OutputCreated symlink from...防止充斥收件箱,我们会在设置警告标志发送一封电子邮件。 我们将使用Node.JS来创建通知程序,因为Node.js有一个很棒NATS客户端。...Python编程语言有一个我们可以加载DebuggingServer模块,丢弃收到电子邮件,但是将它们显示屏幕上,这样我们就可以确保工作正常。

    3.8K00

    区块链一键登录:MetaMask教程(One-click Login with Blockchain: A MetaMask Tutorial)

    该随机数将显示在此弹出框,以便用户知道她或他没有签署某些恶意数据。 当她或他接受,将使用签名消息(调用signature)作为参数调用回调函数。...让我们一起建设吧 本节将逐一完成上述六个步骤。将展示一些关于如何从零开始构建登录流代码片段,或者将它集成到现有的后端,而不需要太多努力。 为了本文目的,创建一个小型演示应用程序。...一个更严格实现会添加一个验证函数来检查这里所有地址都是有效以太坊地址。 第2步:生成随机数(后端) 这是defaultValue()上面模型定义函数完成。...然后我们检查这publicAddress是否已经存在或不在后端。我们要么检索,如果用户已经存在,或者如果不存在,我们handleSignup方法创建一个新帐户。...第一步是从数据库检索用户说publicAddress; 只有一个,因为我们将其定义publicAddress数据库唯一字段。然后,我们将该消息设置msg正在签署...”

    7.8K21

    网络协议与IO模型

    应用层:应用层是OSI模型第七层,定义了不同应用程序之间交互方式。应用层主要任务是提供各种服务,例如文件传输、电子邮件和远程登录等。 1.1、为什么要对网络协议分层 1、简化问题难度和复杂度。...每个分层,都会对所发送数据附加一个首部,在这个首部包含了该层必要信息,如发送目标地址以及协议相关信息。通常,协议提供信息包首部,所要发送内容数据。...第三次握手:Client收到确认后,检查ack是否x+1,ACK是否1,如果正确则将标志位ACK置1,ack=y+1,并将该数据包发送给Server,Server检查ack是否y+1,ACK是否...BIO阻塞是操作系统recv函数阻塞!!!! 当调用recv()函数,系统首先查是否有准备好数据。如果数据没有准备好,那么系统就处于等待状态。...当数据准备好后,将数据从系统缓冲区复制到用户空间,然后该函数返回。套接应用程序,当调用recv()函数,未必用户空间就已经存在数据,那么此时recv()函数就会处于等待状态。

    8810

    67. Django日志logging设置

    __': main() 执行如下: image-20200320145756111 命名记录器 Naming loggers 调用以logging.getLogger()获取(必要创建)记录器实例...为什么层次结构很重要?好吧,因为可以将记录器设置将其日志记录传播给父母。这样,就可以在记录器树根目录定义一组处理程序,并在记录器子树捕获所有日志记录。...调试模式关闭关闭期间引发未捕获异常 将会记录消息(这是有用,因为在这种情况下使异常屏蔽并返回空字符串)。...所以此信息可能非常敏感,您可能不想通过电子邮件发送。考虑使用诸如Sentry之类东西来获得两全其美的体验。既有全面的回溯丰富信息以及不通过电子邮件发送信息安全性。...classCallbackFilter(callback)source ¶ 该过滤器接受一个回调函数(该函数应接受一个参数,即要记录信息),并为通过过滤器每条记录调用函数

    2.9K20

    用JUnit和Byteman测试Spring异步操作

    测试用例假设我们注册了一个应用程序用户(所有事务都已提交)并向他发送电子邮件电子邮件发送操作是异步。 现在,该应用程序只包含一些测试,这些测试显示了如何测试这种情况。...在数据库提交事务之后,但在返回Rest API响应之前,控制器将调用异步执行器向一个具有注册链接用户发送电子邮件(以确认电子邮件地址)。 整个过程在下面的序列图中显示。 ?...现在,猜测这可能不是注册用户最佳方法。可能更好方法是使用某种调度程序组件来检查是否电子邮件发送。更不用说对于更大应用程序,单独微服务将更适合。...从Byteman“开发人员指南”,我们发现,需要确保一个线程直到退出一个或多个相关线程之前不会继续运行情况下,联接器很有用。 通常,创建连接器,我们需要指定需要连接线程标识和编号。...如果预计连接线程数不会达到预期,则执行将达到超时,并抛出某些异常。 “then”部分,我们检查是否创建用户以及是否发送了包含正确内容电子邮件

    1.8K10

    使用 WEB API Beacon 记录行为日志 (译)

    本文主要介绍如何使用它以及它与传统Ajax技术不同之处。 Beacon API是一个基于JavaScriptWeb API,用于将少量数据从浏览器发送到Web服务器,而无需等待响应。...我们可以编写一些JavaScript来跟踪页面中发生事情(可能是用户如何与组件交互,他们滚动到多远,或者在他们遵循CTA之前显示了哪些文章)。但我们需要在用户离开页面发送该数据到服务器。...beacon发送时候不会挂起浏览器其他事情。 要理解为什么这是一个大问题,我们需要注意用什么方式以及什么时候,从我们代码发出这些类型请求。 以我们分析日志记录脚本例。...示例:记录页面时间 为了在实践中看到这一点,让我们创建一个基礎系统来计算用户页面上停留时间。 当页面加载我们会记下时间,当用户离开页面,我们会将开始时间和当前时间发送给服务器。...发送 navigator.sendBeacon(url, data); }; 最后,我们需要在用户离开页面时调用函数

    1.6K21

    分享 Go Web 项目的程序架构和目录结构规划(转)

    Web 服务体系结构是构建每个项目之前一个阶段,就像您准备构建房屋并从创建体系结构计划开始一样。 本文将介绍当我需要在 Golang 创建一个简单 Web 服务如何构造项目。...提到过,登录或注册 (是的,也许其他路由也不需要身份验证),您不需要发送令牌,因为您实际上是从这些请求获取令牌。...当您需要使用配置内容,只要键入包名称 config 并调用变量 Main 就足够了,如下面的示例所示,检索数据库配置: var myDBConf = config.Main.Database !...因此在此文件创建一个函数,该函数以对象形式返回到数据库连接,该函数将在 main.go 调用并传递给所有需要与数据库交互 API。...这个包最酷地方是,您可以 cmd / main.go 声明,然后就可以项目中任何位置调用 translate 函数。 如何初始化 Gotrans?

    2.7K20

    第二十九课 如何实现MetaMask签名授权后DAPP一键登录功能?

    这些函数触发MetaMask显示确认弹窗,以仔细检查用户是否知道他或她正在签名内容。 让我们看看如何使用MetaMask。...随机数将显示在此弹出窗口中,以便用户知道她或他有没有签署某些恶意数据。 当她或他接受签名,将使用带签名消息(称为signature)作为参数调用回调函数。...然后我们检查publicAddress后端是否已经存在。如果用户已经存在,我们就获取用户信息。要么就是handleSignup方法创建一个新帐户。...此外,决定签署一个更加用户友好句子,而不是仅签署nonce,因为它将显示MetaMask确认弹出窗口中:I am signing my once-time nonce: ${nonce}。...后端/auth包含一个 publicAddress和一个路由上接收请求签名signature,并且需要验证钱包地址publicAddress是否签名正确随机数nonce。

    11.2K52

    如何使用GPG加密和签名邮件

    这允许各方之间安全地传输信息,并且可以用于验证消息来源是真实本教程,我们将讨论GPG如何工作以及如何实现。...您可以选择任何可用选项,但由于这是提前完成,因此您将无法获得具体信息。通常,每个可能方案创建撤销证书以获得最大灵活性是个好主意。 之后,您将被要求提供评论,最后确认选择。...创建吊销证书之前,您需要输入GPG密钥密码才能确认身份。...之后,将显示由您签名公钥。发送给他们,这样他们就可以与他人互动获得“批准印章”。 当他们收到这个新签名密钥,他们可以导入,将您生成签名信息添加到他们GPG数据库。...解密消息 收到消息后,只需消息文件上调用GPG: $ gpg file_name.asc 软件会在必要提示您。

    3.6K30

    RabbitMQ

    举个例子,其实当我项目需要访问量过多时候,必然要用到分布式微服相关技术,也就是说将一个项目拆分成多个项目,这种就带来了业务链调用问题,比如说不同服务要相互交互,但是你业务足够复杂之后呢...​ 第三次握手:主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 数据段:"已收到回复,现在要开始传输实际数据了,这样3次握手就完成了,主机A和主机B 就可以传输数据了。...,rm挂了,那么这个就是消息丢失了,就这一个消息丢失不丢失问题需要我们好好去研究,首先是我们要发布确认也就是说我们生产者发布给rm后rm要跟我们说他收到了,不然就要重新发送。...应用场景:为了保证订单业务消息数据不丢失,需要使用到 RabbitMQ 死信队列机制,当消息消费发生异常,将消息投入死信队列.还有比如说: 用户商城下单成功并点击去支付后指定时间未支付自动失效...最重要特性就体现在延时属性上,延时队列元素是希望指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理元素队列。

    1K10

    使用.Net发电子邮件小结

    服务器B关闭与客户端A连接,发送一个FIN给客户端A。 4. 客户端A发回ACK报文确认,并将确认序号设置收到序号加1。...关闭连接,当收到对方FIN报文通知仅仅表示对方没有数据发送给你了; 但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送...由SMTP来控制信件中转方式。SMTP属于TCP/IP家族一员,帮助每一台计算机发送或中转信件找到下一个目的地。通过SMTP协议所指定服务器,就可以把E-Mail寄到收信人服务器上。...是一种优于POP新协议,是美国斯坦福大学1986年开始研发多重邮箱电子邮件系统。和POP一样,IMAP也能下载邮件、从服务器删除邮件或询问是否有新邮件,但IMAP克服了POP一些缺点。...通过用户客户机电子邮件程序,IMAP可让用户服务器上创建并管理邮件文件夹或邮箱、删除邮件、查询某封信一部分或全部内容,完成所有这些工作都不需要把邮件从服务器下载到用户个人计算机上。

    1.6K10

    【技术分享】使用电报API免费创建个人通知系统

    例如,请务必尽快了解我们代码是否发生严重错误,或者 API 是否关闭,或者客户是否进行了购买。 无论您想接收什么通知,使用电报只需要一次HTTP调用!...设置电报要求 首先,您需要创建一个电报帐户。接下来,您可以将应用程序下载到您移动设备并在那里进行设置。 设备准备就绪后,建议您设置网络版本。...(注意:这不是必需,因为您需要在应用程序编写很少内容。 创建电报机器人 现在您有一个电报帐户,我们想向其发送消息。为此,需要将消息从机器人发送给您。.../new_bot BotFather 会回复,询问您新机器人命名。名称可以是您想要任何名称;建议选择一个用例中有意义名称。回复中键入您选择姓名并发送。...电子邮件来说有一个非常具体作用,因为它们是个人沟通主要方式。 和业务问题,所以我不想弄乱收件箱或有一个单独电子邮件地址。

    3.6K60
    领券