Mam taki program co wysyła emaile (outlook, gmail, thuebird) jest obsługiwany przez AI ale są zabezpieczenia Googla więc jak zgłosić projekt aby nie blokowało lub jak ustawić konto Google do tego? Chat gpt mówi że to da się zrobić poprzez zmianę ustawień bezpieczeństwa ale nie mogę tego znaleźć.
oto kod(wiem że amatorski ale to dopiero testy)
import smtplib
import imaplib
import email
from email.mime.text import MIMEText
import dns.resolver
def is_valid_email(email):
try:
domain = email.split('@')[1]
records = dns.resolver.resolve(domain, 'MX')
if len(records) > 0:
return True
else:
return False
except:
return False
def get_smtp_imap_servers(provider):
servers = {
"gmail": ("smtp.gmail.com", "imap.gmail.com"),
"outlook": ("smtp.office365.com", "outlook.office365.com"),
"thunderbird": ("smtp.thunderbird.com", "imap.thunderbird.com")
}
return servers.get(provider.lower())
selected_provider = input("Podaj dostawcę poczty (gmail/outlook/thunderbird): ")
smtp_server, imap_server = get_smtp_imap_servers(selected_provider)
receiver_email = input("Podaj adres email odbiorcy: ")
if not is_valid_email(receiver_email):
print("Podany adres email odbiorcy jest nieprawidłowy lub nie istnieje. Spróbuj ponownie.")
sender_email = input("Wprowadź swój adres email: ")
if not is_valid_email(sender_email):
print("Twój adres jaki podałeś jest nieprawidłowy lub nie istnieje. Spróbuj ponownie.")
sender_password = input("Wprowadź swoje hasło: ")
company = input("Podaj nazwę firmy: ")
goal = input("Podaj cel rozmowy: ")
subject = f"Wdrożenie firmy {company}"
def main():
input_text = (
f"Napisz email, w którym twoim celem jest {goal}. "
f"Jeśli twój cel to zachęcenie klienta do kupna produktu itp. firmy {company}, "
"pisz email w którym powiesz o tej firmie, co ona robi itp. Zachęcisz do zakupu. "
"Wymień jeszcze parę emaili, w których zachęcisz do zakupu. "
f"Jak klient już będzie lekko przekonany, to wyślij mu prezentację całej firmy, jej zalety i sposób wdrożenia firmy {company}. "
f"Po tych krokach pożegnaj się z klientem i podaj mu adres email oraz numer telefonu firmy {company}. "
"Przedstaw się jako Marcin, do dzieła!"
)
last_email_id = 0
message = input("Napisz swoją wiadomość: ")
send_email(sender_email, sender_password, receiver_email, subject, message, smtp_server)
print("Wiadomość wysłana!")
last_email_id = 0
while True:
print("Czekam na odpowiedź...")
last_email_id = read_emails(sender_email, sender_password, receiver_email, last_email_id, imap_server)
def send_email(sender_email, app_password, receiver_email, subject, message, smtp_server):
msg = MIMEText(message)
msg["From"] = sender_email
msg["To"] = receiver_email
msg["Subject"] = subject
server = smtplib.SMTP(smtp_server, 587)
server.starttls()
try:
server.login(sender_email, app_password)
except smtplib.SMTPAuthenticationError:
print("Błędne hasło. Spróbuj ponownie.")
return
server.sendmail(sender_email, receiver_email, msg.as_string())
server.quit()
def read_emails(sender_email, sender_password, receiver_email, last_email_id, imap_server):
mail = imaplib.IMAP4_SSL(imap_server)
try:
mail.login(sender_email, sender_password)
except imaplib.IMAP4.error:
print("Błędne hasło. Spróbuj ponownie.")
return last_email_id
mail.select("inbox")
_, data = mail.search(None, f"FROM {receiver_email} UNSEEN")
email_ids = data[0].split()
for email_id in email_ids:
if int(email_id) > last_email_id:
_, msg_data = mail.fetch(email_id, "(RFC822)")
raw_email = msg_data[0][1]
msg = email.message_from_bytes(raw_email)
print("From:", msg["From"])
print("Date:", msg["Date"])
print("Subject:", msg["Subject"])
print("Body:")
if msg.is_multipart():
for part in msg.walk():
if part.get_content_type() == "text/plain":
print(part.get_payload(decode=True).decode("utf-8"))
response = input("Odpowiedz na email: ")
send_email(sender_email, sender_password, msg["From"], subject, response, smtp_server)
print("Wiadomość wysłana!")
break
else:
print(msg.get_payload(decode=True).decode("utf-8"))
print("=" * 50)
last_email_id = int(email_id)
mail.logout()
return last_email_id
if __name__ == "__main__":
main()