De máquina Ubuntu eu quero enviar um arquivo para outro usuário via e-mail automaticamente sem qualquer trabalho manual

0

Existe alguma maneira de enviar um arquivo com qualquer autenticação da máquina linux para o endereço de e-mail do usuário?

Eu quero enviar um arquivo de uma máquina de usuário para outro endereço de e-mail do usuário com o servidor SMTP. Se sim, podemos enviá-lo do Gmail, isso deve ser feito automaticamente através de um script não deve haver qualquer trabalho manual para o usuário.

    
por abu 13.12.2016 / 12:01

2 respostas

1

O SMTP é um requisito (Simple Mail Transport Protocol). Existem maneiras de configurar o sendmail com o relay SMTP do GMail .

Instalar e configurar o sendmail

Como usuário root em um sistema Debian.

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

Coloque linhas abaixo em seu arquivo de configuração sendmail.mc logo acima da linha de definição "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

Re-construa a configuração do sendmail:

make -C /etc/mail

Recarregar o sendmail:

/etc/init.d/sendmail reload

Teste do sendmail

echo "A simple message" | mail -s "Some subject" [email protected]
    
por 13.12.2016 / 12:15
1

Yes I want to send an automatic email by attaching a file with out smtp server

Nesse caso, eu usaria o Python (e já fiz isso no passado, embora não com anexos). Enviar e-mail com o Python está a apenas alguns import .

Aqui abaixo está um exemplo que eu juntei rapidamente agora, usando um endereço do 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()

Isso funciona, mas não antes de você ter este . Se você não permitir que "aplicativos menos seguros acessem sua conta [Gmail]", você não conseguirá fazer login usando um script. Em vez disso, você receberá um SMTPAuthenticationError (código de erro 534 ). Veja aqui para uma boa referência.

Agora, talvez seja desnecessário ressaltar, mas farei de qualquer maneira; meu pequeno snippet de código acima funciona para txt attachments. Se você deseja anexar uma imagem, por exemplo, você terá que importar o módulo correspondente: from email.mime.image import MIMEImage

Além disso, se você não quiser "codificar" o arquivo anexado, pode simplesmente passá-lo como um argumento. Se o script for chamado de ./pySmtp.py , chame da seguinte forma:

./pySmtp.py att.txt

Se sim, altere o código para isso:

#!/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]

Quanto à parte "automática", você terá que escolher você mesmo dependendo de suas necessidades.

    
por 15.12.2016 / 15:41