Python Forum
Sending email using own smtp server - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Sending email using own smtp server (/thread-42400.html)

Pages: 1 2


Sending email using own smtp server - robertkwild - Jun-30-2024

hi all,

ive made my own smtp server so in my python script i can use my smtp server to send emails

is there a good how to to follow please

thanks,
rob


RE: Sending email using own smtp server - robertkwild - Jul-01-2024

this looks like a good how to to follow

https://hackernoon.com/a-step-by-step-guide-to-sending-emails-with-python


RE: Sending email using own smtp server - Pedroski55 - Jul-01-2024

I think your emails will not get through.

Imagine the amount of spam we would have if everyone could just send emails from home, no checks!

The receiving server will look to see who is sending, and reject your unknown server request.

What you can do is use gmail, yahoo, QQ or other where you have an account

smtp_server = "smtp.gmail.com"
You need your email and an App password, get that from gmail or whoever, the app-password looks like abcd efgh ijkl mnop

But you can't send too many at one time, or the server will complain and end the connection. I sent 104 from QQ before QQ got angry!

Have a look here.

If you need help building the email, let me know.

If you want to send thousands of emails a day, there are companies which specialise in that.


RE: Sending email using own smtp server - snippsat - Jul-01-2024

Use yagmail the best Pyhon email client.
import yagmail

# Replace with your SMTP server details
smtp_host = 'smtp.yourserver.com'
smtp_port = 587  # or the port your server uses
smtp_user = 'yourusername'
smtp_password = 'yourpassword'

yag = yagmail.SMTP(
    user=smtp_user,
    password=smtp_password,
    host=smtp_host,
    port=smtp_port
)

# Sending an email
yag.send(
    to='[email protected]',
    subject='Subject',
    contents='This is the body of the email'
) 
Additional Configuration:
If your server requires SSL/TLS, you can configure that by specifying the smtp_starttls parameter.
yag = yagmail.SMTP(
    user=smtp_user,
    password=smtp_password,
    host=smtp_host,
    port=smtp_port,
    smtp_starttls=True,  # Set to True if your server uses TLS
    smtp_ssl=False  # Set to True if your server uses SSL
)



RE: Sending email using own smtp server - Pedroski55 - Jul-01-2024

Port 587 will require TLS, I'm sure!


RE: Sending email using own smtp server - robertkwild - Jul-01-2024

ok this works

import smtplib
from email.mime.text import MIMEText

smtp_server = '172.17.1.5'
smtp_user = '[email protected]'
smtp_connection = smtplib.SMTP(smtp_server)
email_body = 'This is a test email sent using Python.'
email_message = MIMEText(email_body)
email_message['Subject'] = 'Test Email'
email_message['From'] = '[email protected]'
email_message['To'] = '[email protected]'
smtp_connection.sendmail(smtp_user, '[email protected]', email_message.as_string())
smtp_connection.quit()
but as ive already stated the “to” address cant i use that in the “smtp_connection.sendmail”

thanks,
rob

EDIT - i deleted the "to" line and still works


RE: Sending email using own smtp server - robertkwild - Jul-01-2024

this is throwing a syntax error, can you help me whats wrong with this command

une = subprocess.run(f'powershell.exe $cred = Import-CliXml -Path C:\\python\\cred.xml; Get-aduser -credential $cred -server {form.dom.data} -identity {form.un.data} -properties * | select-object -expandproperty mail')
basically i want to save that powershell command into variable "une" which is the usernames email address ie [email protected]

thanks,
rob

LOL missed a ' at the end


RE: Sending email using own smtp server - robertkwild - Jul-01-2024

ok im trying to grab the email from powershell get-aduser and its worked but i get a whitespace with my result as well

how do i get rid of the white space please

une = subprocess.run(f'powershell.exe $cred = Import-CliXml -Path C:\\python\\cred.xml; Get-aduser -credential $cred -server {dom} -identity {un} -properties * | select-object -expandproperty mail', capture_output=True, text=True)
>>> print(une.stdout)
[email protected]

>>>
thanks,
rob


RE: Sending email using own smtp server - snippsat - Jul-01-2024

email = une.stdout.strip()
print(email)



RE: Sending email using own smtp server - robertkwild - Jul-01-2024

wow got it all to work, heres the end result

import smtplib
from email.mime.text import MIMEText
import subprocess

un = "robert.wild"
dom = "dc01.robo84.net"
cnp = "Password01!"

une = subprocess.run(f'powershell.exe $cred = Import-CliXml -Path C:\\python\\cred.xml; Get-aduser -credential $cred -server {dom} -identity {un} -properties * | select-object -expandproperty mail', capture_output=True, text=True, shell=False)

smtp_server = '172.17.1.5'
smtp_user = '[email protected]'
smtp_connection = smtplib.SMTP(smtp_server)
email_body = f'hello {un} your new password is {cnp} for {dom}'
email_message = MIMEText(email_body)
email_message['Subject'] = 'password change'
email_message['From'] = '[email protected]'
smtp_connection.sendmail(smtp_user, {une.stdout}, email_message.as_string())
smtp_connection.quit()