使用我的雅虎帐户发送电子邮件 - 错误消息
Send email using my yahoo account - error message
我用的是Python3.5.2.
我正在尝试使用我的雅虎帐户发送电子邮件。我根据这个网站`http://neerajbyte.com/send-email-through-python-console-with-gmail-hotmail-and-yahoo/'使用yahoo SMTP服务器域名smtp.mail.yahoo.com。但是我收到一条错误消息(如下)。通常出于安全原因 google,我试过了,会向我发送一封电子邮件,通知我有一个应用程序试图访问我的帐户,我必须单击 link 才能允许它。但我没有收到来自雅虎的电子邮件,只是这条错误消息,不知道为什么。
这是我的代码:
>>> import smtplib
>>> conn = smtplib.SMTP('smtp.mail.yahoo.com', 587)
>>> type(conn)
<class 'smtplib.SMTP'>
>>> conn
<smtplib.SMTP object at 0x02AD9A70>
>>> conn.ehlo()
(250, b'smtp.mail.yahoo.com\nPIPELINING\nSIZE 41697280\n8 BITMIME\nSTARTTLS')
>>> conn.starttls
<bound method SMTP.starttls of <smtplib.SMTP object at 0x02AD9A70>>
>>> conn.login('j@yahoo.com', 'j2')
这是我的错误信息:
_Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
conn.login('j@yahoo.com', 'j2')
File "C:\Users\J\AppData\Local\Programs\Python\Python35-32\lib\smtplib.py", line 696, in login
"SMTP AUTH extension not supported by server.")
smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.
_
据我所知,Yahoo 和 Gmail 在尝试从应用程序登录时需要双因素身份验证。这些是步骤:
在 Yahoo 中,您可以转到帐户信息。
单击左侧的“帐户安全”选项卡。启用两步验证。然后我第一次尝试此操作时,您将获得 select 验证方法的选项。通常我选择短信一次性密码
然后您可以管理应用程序密码。这将弹出一个弹出窗口以生成一个 16 个字符的密码。这是您在登录邮件时可以在应用程序中使用的内容。
以下是示例屏幕截图:
关注文章https://support.google.com/accounts/answer/185833?hl=en
使用 ansible 邮件模块为 gmail 通知创建和使用应用程序密码。
生成应用程序密码,并在您的 anisble 剧本中使用相同的 16 位应用程序密码
- name: 'ansible mail module to gmail notification'
mail:
host: smtp.gmail.com
subtype: html
port: 587
password: **************
to: XXXXXXXXXX@gmail.com
from: YYYYYYYYYY.YYYY@gmail.com
username: YYYYYYYYYY.YYYY@gmail.com
subject: User details report
attach: /tmp/data_details/data_details.csv
body: {{ lookup('file', '/tmp/data_details/data_details.csv') }}
delegate_to: localhost
现在尝试发送电子邮件应该可以。
我已经成功测试并且正在运行。
另一种在为邮件模块编写剧本时使用 ansible vault 密码字符串变量的最佳方法。不要危及安全风险。
我已经实现了使用邮件模块发送电子邮件的相同方法,并且按预期工作。
ansible-vault encrypt_string yourgmailapppassword --name gmail_password
使用上述方法使用 ansible vault 字符串选项加密 gmail 应用程序密码,并将加密变量定义到剧本中。
cat fetch-users-deatils.yml
- name: Linux servers user audit report preparation
hosts: "{{ HOSTS }}"
roles:
- user-collections
- name: Refreshing user Dashboard & sending email from localhost
hosts: localhost
become: false
vars:
- gmail_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
62613232383962323430633831113465356231563163366235353034393230656331663436646233
3266353862303738303737383530313664356135336661390a336562613436626665333833323030
61393135643433313930643337363465343332353716333831222766376137396430426361663633
6233313433633231320a663435636230636431643731333166366435346564316331323361633566
38622138392437888466666535323432653034323936353961646233613437343831
tasks:
- name: Collecting the user details information and recreating the users dashboard
script: dashboard_user.sh
tags: user_dashboard
- name: User Audit data output file stored on below location
debug:
msg:
/tmp/user_collection/user_details.csv
- name: 'Sending Ansible users report email'
mail:
host: smtp.gmail.com
subtype: html
port: 587
password: "{{ gmail_password }}"
to: abcdefghijkl@gmail.com
from: abcdefghijkl@gmail.com
username: abcdefghijkl@gmail.com
subject: User details report
attach: /tmp/user_collection/user_details.csv
body: <pre> {{ lookup('file', '/tmp/user_collection/user_details.csv') }} </pre>
delegate_to: localhost
下面是ansible playbook执行命令
ansible-playbook fetch-users-deatils.yml -e "HOSTS=all" --ask-vault-pass
我用的是Python3.5.2.
我正在尝试使用我的雅虎帐户发送电子邮件。我根据这个网站`http://neerajbyte.com/send-email-through-python-console-with-gmail-hotmail-and-yahoo/'使用yahoo SMTP服务器域名smtp.mail.yahoo.com。但是我收到一条错误消息(如下)。通常出于安全原因 google,我试过了,会向我发送一封电子邮件,通知我有一个应用程序试图访问我的帐户,我必须单击 link 才能允许它。但我没有收到来自雅虎的电子邮件,只是这条错误消息,不知道为什么。
这是我的代码:
>>> import smtplib
>>> conn = smtplib.SMTP('smtp.mail.yahoo.com', 587)
>>> type(conn)
<class 'smtplib.SMTP'>
>>> conn
<smtplib.SMTP object at 0x02AD9A70>
>>> conn.ehlo()
(250, b'smtp.mail.yahoo.com\nPIPELINING\nSIZE 41697280\n8 BITMIME\nSTARTTLS')
>>> conn.starttls
<bound method SMTP.starttls of <smtplib.SMTP object at 0x02AD9A70>>
>>> conn.login('j@yahoo.com', 'j2')
这是我的错误信息:
_Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
conn.login('j@yahoo.com', 'j2')
File "C:\Users\J\AppData\Local\Programs\Python\Python35-32\lib\smtplib.py", line 696, in login
"SMTP AUTH extension not supported by server.")
smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.
_
据我所知,Yahoo 和 Gmail 在尝试从应用程序登录时需要双因素身份验证。这些是步骤:
在 Yahoo 中,您可以转到帐户信息。
单击左侧的“帐户安全”选项卡。启用两步验证。然后我第一次尝试此操作时,您将获得 select 验证方法的选项。通常我选择短信一次性密码
然后您可以管理应用程序密码。这将弹出一个弹出窗口以生成一个 16 个字符的密码。这是您在登录邮件时可以在应用程序中使用的内容。
以下是示例屏幕截图:
关注文章https://support.google.com/accounts/answer/185833?hl=en
使用 ansible 邮件模块为 gmail 通知创建和使用应用程序密码。
生成应用程序密码,并在您的 anisble 剧本中使用相同的 16 位应用程序密码
- name: 'ansible mail module to gmail notification' mail: host: smtp.gmail.com subtype: html port: 587 password: ************** to: XXXXXXXXXX@gmail.com from: YYYYYYYYYY.YYYY@gmail.com username: YYYYYYYYYY.YYYY@gmail.com subject: User details report attach: /tmp/data_details/data_details.csv body: {{ lookup('file', '/tmp/data_details/data_details.csv') }} delegate_to: localhost
现在尝试发送电子邮件应该可以。 我已经成功测试并且正在运行。
另一种在为邮件模块编写剧本时使用 ansible vault 密码字符串变量的最佳方法。不要危及安全风险。
我已经实现了使用邮件模块发送电子邮件的相同方法,并且按预期工作。
ansible-vault encrypt_string yourgmailapppassword --name gmail_password
使用上述方法使用 ansible vault 字符串选项加密 gmail 应用程序密码,并将加密变量定义到剧本中。
cat fetch-users-deatils.yml
- name: Linux servers user audit report preparation
hosts: "{{ HOSTS }}"
roles:
- user-collections
- name: Refreshing user Dashboard & sending email from localhost
hosts: localhost
become: false
vars:
- gmail_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
62613232383962323430633831113465356231563163366235353034393230656331663436646233
3266353862303738303737383530313664356135336661390a336562613436626665333833323030
61393135643433313930643337363465343332353716333831222766376137396430426361663633
6233313433633231320a663435636230636431643731333166366435346564316331323361633566
38622138392437888466666535323432653034323936353961646233613437343831
tasks:
- name: Collecting the user details information and recreating the users dashboard
script: dashboard_user.sh
tags: user_dashboard
- name: User Audit data output file stored on below location
debug:
msg:
/tmp/user_collection/user_details.csv
- name: 'Sending Ansible users report email'
mail:
host: smtp.gmail.com
subtype: html
port: 587
password: "{{ gmail_password }}"
to: abcdefghijkl@gmail.com
from: abcdefghijkl@gmail.com
username: abcdefghijkl@gmail.com
subject: User details report
attach: /tmp/user_collection/user_details.csv
body: <pre> {{ lookup('file', '/tmp/user_collection/user_details.csv') }} </pre>
delegate_to: localhost
下面是ansible playbook执行命令
ansible-playbook fetch-users-deatils.yml -e "HOSTS=all" --ask-vault-pass