IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

[Python 3.X] smtp encodage du sujet


Sujet :

Python

  1. #1
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut [Python 3.X] smtp encodage du sujet
    Bonjour,
    NB 1 : C'est ma première question Python, jusqu'ici je codais en Perl
    NB 2 : Donc je suis plus que nul en Python
    NB 3 : Je dois envoyer rapidement un mail depuis Arch Linux et en Python, car MIME:Lite n'est pas disponible sur le Perl Arch (This is perl 5, version 40, subversion 2 (v5.40.2) built for x86_64-linux-thread-multi), alors que je l'utilise sans pb en Perl Strawberry sous Win 7 et Win11

    Bout de mon code, le plus gros pompé sur le net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    import smtplib
    import subprocess
    from os.path import basename
    import email.message
    from email.mime.application import MIMEApplication
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    #import base64
     
    # OK
    # https://forwardemail.net/en/guides/smtp-integration#python-integration
    # Email configuration
    sender_email = "smtp.free.fr"
    receiver_email = "xxxx@free.fr"
    password = "xxxx"
     
    NbFic=subprocess.run("ls -l /root/FS_NTFS/SAVE/Bookmarks | grep bookmarks | wc -l", shell=True, capture_output=True, text=True)
    chaine = "ATTENTION, il y a {} fichiers Bookmark.html dans /root/FS_NTFS/SAVE/Bookmarks".format(NbFic.stdout.strip());
     
    #bchaine = base64.b64encode(bytes(chaine, 'utf-8')) # bytes
    #base64_str = bchaine.decode('utf-8') # convert bytes to string
     
    # Create message
    message = MIMEMultipart()
    message["Subject"] = chaine
    message["From"] = "xxxx@free.fr"
    message["To"] = "xxxx@free.fr"
    Si je code un sujet en dur ça passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    message["Subject"] = "Hello World comme dans tous les exemples..."
     
    #> python Smtp.py
    Email sent successfully!
    Si je construis mon sujet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NbFic=subprocess.run("ls -l /root/FS_NTFS/SAVE/Bookmarks | grep bookmarks | wc -l", shell=True, capture_output=True, text=True)
    chaine = "ATTENTION, il y a {} fichiers Bookmark.html dans /root/FS_NTFS/SAVE/Bookmarks".format(NbFic.stdout.strip());
     
    message["Subject"] = chaine
    Le mail part bien, mais free détecte du spam ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #> python Smtp.py
    Error sending email: (550, b'5.7.1 Spam Detected - Mail Rejected.  Please see our policy at: http://postmaster.free.fr/#spam_detected')
    Alors que ma chaine se construit correctement Ess_2.py :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import os
    import subprocess
     
    # Sujet
    # NbFic=os.system('ls -l /root/FS_NTFS/SAVE/Bookmarks | grep bookmarks | wc -l')
    # print(NbFic)
     
    NbFic=subprocess.run("ls -l /root/FS_NTFS/SAVE/Bookmarks | grep bookmarks | wc -l", shell=True, capture_output=True, text=True)
    # print(NbFic.stdout)
     
    # Afficher la sortie
    # result = NbFic.strip()
     
    chaine = "ATTENTION, il y a {} fichiers Bookmark.html dans /root/FS_NTFS/SAVE/Bookmarks".format(NbFic.stdout.strip());
    print(chaine)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #> python Ess_2.py
    ATTENTION, il y a 7 fichiers Bookmark.html dans /root/FS_NTFS/SAVE/Bookmarks

    J'ai essayé au pif quelques conversions base64... Mais vaudrait mieux quelqu'un qui sait

    Pouvez-vous venir à mon secours en attendant que je me mette correctement à Python ?
    MERCI !

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 238
    Par défaut
    Hello,
    attention ! il y a des mots qui quand ils sont dans le sujet font détecter un SPAM , par exemple ATTENTION pourrait être un de ces mots.
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko :zen:

  3. #3
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,
    attention ! il y a des mots qui quand ils sont dans le sujet font détecter un SPAM , par exemple ATTENTION pourrait être un de ces mots.
    Ami calmant, J.P
    Merci jurassic pork !

    Je viens de faire un essai à tout hasard, et c'est pareil : free.fr/#spam_detected

    Je précise à tout hasard, car c'est le même libellé que j'envoie en Perl et toujours sur smtp.free

    MERCI : car j'explore toutes les idées... c'est tellement invraisemblable !

    [Edit 10:22]
    J'ai eu un doute j'ai essayé en enlevant tout ce qui pourrait gêner entre autre les slashs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = "ATTENTION il y a {} fichiers Bookmarks".format(NbFic.stdout.strip());
    C'est pareil

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 238
    Par défaut
    Spam Email Characters


    Les caractères spam dans le sujet d'un e-mail peuvent entraîner une classification de votre message comme spam. Il est donc important d'éviter certains éléments dans l'objet de votre e-mail. Voici quelques conseils :

    • Évitez les mots associés au spam tels que "gratuit", "offre", "promo", "urgent", "50%", "gagner", "€", etc.
    • Ne rédigez pas l'objet en majuscules. Les objets entièrement écrits en majuscules sont souvent considérés comme du spam.
    • Évitez l'usage excessif de caractères spéciaux comme "!", "%", "/", "&", "[ ]", "{ }", "’", "()", "=", "+", "*", "#", "…".
    • Soyez sobre dans l'utilisation de la ponctuation. Les points d'exclamation répétés ou les caractères spéciaux peuvent être perçus comme suspects.
    • L'objet doit être professionnel et ne pas contenir de fautes d'orthographe ou de grammaire.




    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko :zen:

  5. #5
    Membre actif
    Homme Profil pro
    Animateur Numérique
    Inscrit en
    Février 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Animateur Numérique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 143
    Par défaut
    Salut,

    Je confirme les dires de jurassic pork.
    As-tu essayé de mettre ta chaine dans le corps du message plutot que dans le sujet ?

  6. #6
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Encore MERCI !

    D'abord à jurassic pork :
    Oui j'avais eu un doute, c'est la raison pour laquelle j'avais fait un autre essai &[Edit 10:22] en supprimant les slashs ==> Pareil

    à Diablo76 :
    Ben oui en dur ça fonctionne
    Mais j'ai envi de l'avoir dans le sujet :
    1) ça me le sort en gras
    2) je n'ai pas besoin de développer le corps du mail

    Sur Win11 la même chose en Perl, ça donne :

    NB: au passage, j'ai l'intention de m'y mettre

    Je m'amuse à y coller une image...

    Il y a même des caractères spéciaux (les cœurs) et un retour chariot à l'intérieur pour un autre usage éventuel... et ça passe !
    Je m'amuse à y coller une image...

    En Perl la construction du sujet est similaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    opendir my $FhRep, $RepBookMark or die ("impossible d'ouvrir le répertoire $RepBookMark :\n\t $! - $@\n");
    my @Reps = grep { !/^\.\.?$/ } readdir($FhRep);
    my $NbBookMark = @Reps;
    my $BookMark   = "ATTENTION, il y a $NbBookMark fichiers Bookmark.html,\nle dernier est $Reps[-1]";
    Comme il n'y a rien de confidentiel, je colle la totalité du code, en invalidant seulement les infos de connexion.
    ça permettra éventuellement de tester...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    import smtplib
    import subprocess
    from os.path import basename
    import email.message
    from email.mime.application import MIMEApplication
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    #import base64
     
    # OK
    # https://forwardemail.net/en/guides/smtp-integration#python-integration
    # Email configuration
    sender_email = "smtp.free.fr"
    receiver_email = "xxxx@free.fr"
    password = "PWDxxxx"
     
    NbFic=subprocess.run("ls -l /root/FS_NTFS/SAVE/Bookmarks | grep bookmarks | wc -l", shell=True, capture_output=True, text=True)
    chaine = "ATTENTION il y a {} fichiers Bookmarks".format(NbFic.stdout.strip());
     
    #bchaine = base64.b64encode(bytes(chaine, 'utf-8')) # bytes
    #base64_str = bchaine.decode('utf-8') # convert bytes to string
     
    # Create message
    message = MIMEMultipart()
    message["Subject"] = chaine
    message["From"] = "xxxx@free.fr"
    message["To"] = "xxxx@free.fr"
     
    # Create the plain-text and HTML version of your message
    text = "Hello world! This is a test email sent using Python and Forward Email SMTP TXT."
    html = "<html><body><b>Hello world!</b> This is a test email sent using Python and Forward Email SMTP HTML.</body></html>"
     
     
    # We assume that the image file is in the same directory that you run your Python script from
    # fp = open('Spinoza.bmp', 'rb')
    # image = MIMEImage(fp.read())
    # fp.close()
     
    # Specify the ID according to the img src in the HTML part
    # image.add_header('Content-ID', '<Mailtrapimage>')
    # message.attach(image)
     
    message.attach(MIMEText(html, 'html')) 
     
    # for attchement
    # part = MIMEApplication(open("/root/FS_NTFS/Mime/Spinoza.bmp", "rb").read())
    # part['Content-Disposition'] = 'attachment; filename='+basename("/root/FS_NTFS/Mime/")
    # message.attach(part)
     
    # Turn these into plain/html MIMEText objects
    part1 = MIMEText(text, "plain")
    part2 = MIMEText(html, "html")
     
    # Add HTML/plain-text parts to MIMEMultipart message
    # Commenter (part2) pour n'avoir que le TXT
    message.attach(part1)
    message.attach(part2)
     
    # Send email
    try:
        server = smtplib.SMTP_SSL("smtp.free.fr", 465)
        server.login("xxxx@free.fr", "PWDxxxx")
        server.sendmail("xxxx@free.fr", "xxxx@free.fr", message.as_string())
        server.quit()
        print("Email sent successfully!")
    except Exception as e:
        print(f"Error sending email: {e}")
    En remplaçant la variable chaine par le libellé "chaine" on voit la différence

    L'original sur le net est ICI


    Perso j'ai un doute sur ce que renvoi subprocess, que je ne maîtrise absolument pas.

  7. #7
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Bonjour,
    Je n'avais trouvé des exemples que sur le port 465
    Sur le port 587 ça va mieux, je peux mettre "ATTENTION" & le nombre de fichier dans le sujet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    # OK
    # https://datascientist.fr/blog/tutoriel-python-envoyer-des-emails-avec-smtp
    #
    ...
    NbFic=subprocess.run("ls -l /root/FS_NTFS/SAVE/Bookmarks | grep bookmarks | wc -l", shell=True, capture_output=True, text=True)
    chaine = "ATTENTION il y a {} fichiers Bookmarks".format(NbFic.stdout.strip());
    ...
    email['Subject'] = chaine
    ...
     
    # Informations du serveur SMTP
    smtp_server = 'smtp.free.fr'
    port = 587							# Port recommandé pour le chiffrement TLS
    username = 'xxxx@free.fr'
    password = 'PWDxxxx'
     
    # Send email
    try:
        with smtplib.SMTP(smtp_server, port) as server:
            server.starttls()
            server.login(username, password)
            server.send_message(email)
    except smtplib.SMTPConnectError:
        print("Erreur de connexion au serveur SMTP.")
    except smtplib.SMTPAuthenticationError:
        print("Erreur d'authentification. Veuillez vérifier vos identifiants.")
    except Exception as e:
        print(f"Une erreur s'est produite : {e}")

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Python - SQL problème d'encodage
    Par cocs78 dans le forum Général Python
    Réponses: 6
    Dernier message: 21/02/2017, 11h10
  2. Python 3.4.2 encodage
    Par bloups0 dans le forum Général Python
    Réponses: 2
    Dernier message: 12/02/2016, 17h18
  3. Python + Apache : problème d'encodage UTF8 [résolu]
    Par CetTer dans le forum Général Python
    Réponses: 5
    Dernier message: 16/12/2013, 21h53
  4. Problème d'encodage de sujet mail
    Par van___fanel dans le forum Langage
    Réponses: 0
    Dernier message: 05/03/2010, 13h20
  5. Problème encodage du sujet avec Mail()
    Par abeh25 dans le forum Langage
    Réponses: 1
    Dernier message: 02/07/2009, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo