認証なしでLinuxシステムからユーザーの電子メールアドレスにファイルを送信する方法はありますか?
SMTPサーバーなしでユーザーのコンピューターから別のユーザーのEメールアドレスにファイルを送信したいと思います。その場合は、Gmailから送信でき、スクリプトを介して自動的に実行する必要があり、ユーザーは手動で作業する必要はありません。
答え1
SMTPは必須です(Simple Mail Transfer Protocol)。設定する方法がありますGmail SMTP リレーを使用してメールを送信する。
sendmailのインストールと設定
Debianシステムのrootユーザーとして。
apt-get install sendmail mailutils sendmail-bin
mkdir -m 700 /etc/mail/authinfo
cd /etc/mail/authinfo
#hash your gmail password info
makemap hash gmail-auth <<<'AuthInfo: "U:root" "I:YOUR GMAIL EMAIL ADDRESS" "P:YOUR PASSWORD"'
#don't save your bash history because of password info
unset HISTFILE
sendmail.mc構成ファイルの最初の「MAILER」定義行のすぐ上に次の行を配置します。
define(`SMART_HOST',`[smtp.gmail.com]')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl
define(`confAUTH_OPTIONS', `A p')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash -o /etc/mail/authinfo/gmail-auth.db')dnl
sendmail 構成を再作成します。
make -C /etc/mail
送信したメールを再読み込みしてください。
/etc/init.d/sendmail reload
メール送信テスト
echo "A simple message" | mail -s "Some subject" [email protected]
答え2
はい、smtpサーバーなしでファイルを添付して自動電子メールを送信したいと思います。
この場合はPythonを使用します(過去には添付ファイルはありませんでしたが、これを行いました)。 Pythonを使用して電子メールを送信するのに数分しかかかりませんimport
。
以下は、Gmailアドレスを使用してすばやく設定した例です。
#!/usr/bin/env python3
import smtplib
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# Your login credentials
sender = "[email protected]"
emailPasswd = "yourpassword"
# Who are we sending to
receiver = "[email protected]"
# The path to the file we want to attach
fileToAttach = "att.txt"
msg = MIMEMultipart()
msg['Subject'] = "Here's an e-mail with attachment"
msg['From'] = sender
msg['To'] = receiver
body = "Mail with attachment"
bodyText = MIMEText(body, "plain")
# Now we try to add the attachment
try:
att = open(fileToAttach)
attachment = MIMEText(att.read())
attachment.add_header('Content-Disposition', 'attachment', filename=fileToAttach)
except IOError:
print("Could not add attachment {}".format(fileToAttach))
exit(1)
# "Attach" both the attachment and body to 'msg'
msg.attach(bodyText)
msg.attach(attachment)
# Connect and send e-mail
server = smtplib.SMTP("smtp.gmail.com", 587)
server.ehlo()
server.starttls()
server.login(sender, emailPasswd)
server.sendmail(sender, receiver, msg.as_string())
server.quit()
この方法は機能しますが、完了するまでは機能しません。これ。 「セキュリティレベルの低いアプリケーションが[Gmail]アカウントにアクセスできない場合」いいえスクリプトを使用してログインする機能。代わりにSMTPAuthenticationError
(エラーコード)が表示されます534
。バラよりここ良い参考資料です。
これで指摘する必要はないかもしれませんが、とにかく上記の小さなコードスニペットはtxt
添付ファイルで機能します。たとえば、画像を添付するには適切なモジュールをインポートする必要があります。from email.mime.image import MIMEImage
あるいは、添付ファイルを「ハードコード」したくない場合は、単にパラメータとして渡すこともできます。スクリプトを呼び出す場合は、./pySmtp.py
次のように呼び出します。
./pySmtp.py att.txt
その場合は、コードを次のように変更してください。
#!/usr/bin/env python3
import sys
import smtplib
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# Your login credentials
sender = "[email protected]"
emailPasswd = "yourpassword"
# Who are we sending to
receiver = "[email protected]"
# The path to the file we want to attach
fileToAttach = sys.argv[1]
[rest of code stays the same]
「自動」部分は必要に応じて直接選択する必要があります。