Получение \ n в строке при добавлении ее в электронную почту - PullRequest
0 голосов
/ 02 августа 2020

Попытка добавить строку, которую я создал ранее из excel, используя этот код

data = interface.df
data1 = data.drop_duplicates(subset=["Ref/Lic Nr"], keep="first")
cr = pd.DataFrame(data1,columns= ['Carrier'])
rf = pd.DataFrame(data1,columns= ['Ref/Lic Nr'])
amtg = data1.loc[data1.Carrier=='AMTG', 'Ref/Lic Nr']
amtg1=(amtg.to_string(index=False, header=False))

И затем, вводя ее в этот код

import smtplib
import carriers
gmail_user = 'asgsgasgasg@gmail.com'
gmail_password = 'wqrqwgqwgqwb'

sent_from = gmail_user
if len(carriers.amtg) > 0:   
    to = ['afasgaswrl@gmail.com']
    subject = 'updates'
    body = " Good morning, Can we get updates for: ", carriers.amtg1
else:
     pass

email_text = """\
From: %s
To: %s
Subject: %s

%s
""" % (sent_from, ", ".join(to), subject, body)

try:
    server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
    server.ehlo()
    server.login(gmail_user, gmail_password)
    server.sendmail(sent_from, to, email_text)
    server.close()

    print ('Email sent!')
except:
    print ('Something went wrong...')

Но когда я получаю информацию, я получить значения типа CNG41383874 \ n CNG41383875 \ n вместо:

CNG41383874

CNG41383875

Письмо, которое я получаю

1 Ответ

1 голос
/ 02 августа 2020

Ваша проблема здесь:

body = " Good morning, Can we get updates for: ", carriers.amtg1

Это устанавливает body в tuple строк, а не одну длинную строку, и когда она форматируется в переменную email_text, она вставляет форма str для tuple, которая является repr его компонентов (и repr из str с символами новой строки будет отображать escape, а не необработанный символ новой строки). Чтобы заставить его работать, объедините строки в одну строку:

body = " Good morning, Can we get updates for: " + carriers.amtg1

Это отформатирует обычную форму str в email_text напрямую, а не несколько repr s, что предотвратит эту проблему.

...