Skip to content

Commit

Permalink
feat: add sender & recipient name
Browse files Browse the repository at this point in the history
  • Loading branch information
Al-Taie committed Feb 22, 2022
1 parent 070de7c commit 6b65f62
Show file tree
Hide file tree
Showing 7 changed files with 196 additions and 15 deletions.
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,11 @@ mail.send(receiver='someone@example.com', # Email From Any service Provider

**Parameters**
```py
receiver: Email Address as String or List. [Recuired]
receiver: Email Address as String or List. [Required]
cc: Email Address as String or List. (Carbon Copy) [Optional]
bcc: Email Address as String or List. (Blind Carbon Copy) [Optional]
sender_name: Set Sender name. [Optional]
receiver_name: Set receiver name. [Optional]
no_reply: Set Another Email To Reply [Optional]
subject: Message Title. [Optional]
message: Your Message. [Optional]
Expand Down Expand Up @@ -134,6 +136,11 @@ mail.about()

#### Changelogs

> > 2022.2.22 update:
> - Add (sender name & receiver name) feature.
<br>

> > 2022.2.10 update:
> - Fix issue #3 TypeError on python < 3.10
Expand Down
Binary file added dist/quick-mailer-2022.2.22.tar.gz
Binary file not shown.
Binary file added dist/quick_mailer-2022.2.22-py3-none-any.whl
Binary file not shown.
162 changes: 162 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,168 @@ mail.about()
> - Fix issue #3 TypeError on python < 3.10
<br>
![image](https://raw.githubusercontent.com/Al-Taie/quick-mailer/master/images/bsmala.png)

[![Downloads](https://pepy.tech/badge/quick-mailer)](https://pepy.tech/project/quick-mailer)
[![Downloads](https://pepy.tech/badge/quick-mailer/month)](https://pepy.tech/project/quick-mailer/month)
[![Downloads](https://pepy.tech/badge/quick-mailer/week)](https://pepy.tech/project/quick-mailer/week)
<a href="https://www.instagram.com/9_Tay"><img src="https://img.shields.io/badge/instagram-%23E4415F?style=flat&logo=instagram&logoColor=white"/></a>

# Description

This Module help you to send **fast Email. 馃尭**

And you can attach **image, audio, and other files easily.**

The Module support **Gmail And Microsoft** right now, but in the nearly future will support other mail services.

# Installation:

```cmd
pip install quick-mailer
```

**[-->> pypi Link](https://pypi.org/project/quick-mailer)**
**[-->> GitHub Link](https://github.com/Al-Taie/quick-mailer)**

# Usage:

**Send Message**

```py
from mailer import Mailer

mail = Mailer(email='someone@gmail.com',
password='your_password')

mail.send(receiver='someone@example.com', # Email From Any service Provider
no_reply='noreplay@example.com', # Redirect receiver to another email when try to reply.
subject='TEST',
message='HI, This Message From Python :)')
```

**Parameters**

```py
receiver: Email Address as String or List. [Required]
cc: Email Address as String or List. (Carbon Copy) [Optional]
bcc: Email Address as String or List. (Blind Carbon Copy) [Optional]
sender_name: Set Sender name. [Optional]
receiver_name: Set receiver name. [Optional]
no_reply: Set Another Email To Reply [Optional]
subject: Message Title. [Optional]
message: Your Message. [Optional]
image: Image File Name. (Image Path) [Optional]
audio: Audio File Name. (Audio Path) [Optional]
file: File Name. (Any File Path) [Optional]
```

**Check Send Status**

```py
# Using (status) Attribute
print(mail.status)

# Example For One Receiver:
if mail.status:
pass
else:
pass

# Note:
# IF You Put List Emails Receivers
# Variable Will Return Dictionary Results.

# IF You Allowed Repeat
# The Attribute Will provide Results List.
```

**Send Multi Files**

```py
mail.send(receiver='someone@example.com', # Email From Any service Provider
subject='TEST',
message='HI, This Message From Python :)',
image='img.jpg', # Image File Path
audio='sound.mp3', # Audio File Path
file='file.zip') # Any File Path
```

**Settings Method**

```py
mail.settings(repeat=1, # To Repeat Sending
sleep=0, # To Sleep After Send Each Message
provider=mail.GMAIL, # Set Maill Service
multi=False) # Default False, If You Set True
# Message Will Sent 4 Each Email Alone
# Else Will Sent To All Together
```

**Send Multi Emails**

```py
# One By One:
mail.settings(multi=False)

# In Same Message:
mail.settings(multi=True)

mail.send(receiver=['someone@example.com', 'someone1@example.com'],
subject='TEST',
message='HI, This Message From Python :)')
```

**Counter Variables**

```py
# CC Receivers Count
print('CC count:', mail.count_cc)

# BCC Receivers Count
print('BCC count:', mail.count_bcc)

# Receivers Count
print('Receivers count:', mail.count_rec)

# Messages Count
print('Messages count:', mail.count_msg)
```

**Example Function**

```py
from mailer import example

example()
```

**About Method**

```py
# You Can Use (mail.about) Method for more info.
mail.about()
```

#### Changelogs

> > 2022.2.22 update:
> - Add (sender name & receiver name) feature.
<br>

> > 2022.2.10 update:
> - Fix issue #3 TypeError on python < 3.10
<br>

> > 2022.2.2 update:
> - Support Html Message
> - Fix issue #1 TypeError on python < 3.10
**Follow Me on Instagram: [@9_Tay](https://www.instagram.com/9_tay). 馃尭**

# Thank You :) 馃尭

> > 2022.2.2 update:
> - Support Html Message
Expand Down
2 changes: 1 addition & 1 deletion mailer/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@
from mailer.utils import example

__all__ = ['Mailer', '__VERSION__', 'example']
__VERSION__ = '2022.2.10'
__VERSION__ = '2022.2.22'
29 changes: 19 additions & 10 deletions mailer/send.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formataddr
from time import sleep
from typing import Text, List, Dict, Union

Expand All @@ -22,14 +23,16 @@ def __init__(self, email: str, password: str):
self._msg = MIMEMultipart()

def __prepare_message(self,
receiver,
cc=None,
bcc=None,
receiver: str,
receiver_name: str = '',
sender_name: str = '',
cc: str = None,
bcc: str = None,
no_reply: str = None,
subject: str = None,
message: str = None) -> None:
self._msg['Subject'] = subject
self._msg['From'] = self.email
self._msg['From'] = formataddr(pair=(sender_name, self.email))

if message is not None:
text = MIMEText(message, 'html')
Expand All @@ -47,7 +50,7 @@ def __prepare_message(self,
self.count_bcc = len(bcc)
bcc: Text = ','.join(i for i in bcc)

self._msg['To'] = receiver
self._msg['To'] = formataddr(pair=(receiver_name, receiver))
self._msg['CC'] = cc
self._msg['BCC'] = bcc
self._msg['Reply-To'] = no_reply
Expand Down Expand Up @@ -86,16 +89,20 @@ def __prepare_attachments(self,

# Send Method
def send(self,
receiver,
cc=None,
bcc=None,
receiver: str,
receiver_name: str = '',
sender_name: str = '',
cc: str = None,
bcc: str = None,
no_reply: str = None,
subject: str = None,
message: str = None,
image: str = None,
audio: str = None,
file: str = None) -> None:
"""
:param receiver_name: Set recipient name
:param sender_name: Set sender name
:param no_reply: Set no-reply email
:param cc: Email Address as String or List. (Carbon Copy)
:param bcc: Email Address as String or List. (Blind Carbon Copy)
Expand All @@ -111,8 +118,10 @@ def send(self,
send_info: List = []
multi_info: Dict = {}

self.__prepare_message(receiver=receiver, cc=cc,
bcc=bcc, subject=subject,
self.__prepare_message(receiver=receiver,
receiver_name=receiver_name,
sender_name=sender_name,
cc=cc, bcc=bcc, subject=subject,
message=message, no_reply=no_reply)

self.__prepare_attachments(image=image,
Expand Down
9 changes: 6 additions & 3 deletions quick_mailer.egg-info/PKG-INFO
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: quick-mailer
Version: 2022.2.10
Version: 2022.2.22
Summary: This Module help you to send fast Email.馃尭
Home-page: https://github.com/Al-Taie/quick-mailer
Author: Ahmed Al-Taie
Expand Down Expand Up @@ -35,7 +35,7 @@ pip install quick-mailer
```

[//]: # (**[-->> pypi Link]&#40;https://pypi.org/project/quick-mailer&#41;**)

[//]: # ()
**[-->> GitHub Link](https://github.com/Al-Taie/quick-mailer)**

# Usage:
Expand All @@ -56,9 +56,11 @@ mail.send(receiver='someone@example.com', # Email From Any service Provider

**Parameters**
```py
receiver: Email Address as String or List. [Recuired]
receiver: Email Address as String or List. [Required]
cc: Email Address as String or List. (Carbon Copy) [Optional]
bcc: Email Address as String or List. (Blind Carbon Copy) [Optional]
sender_name: Set Sender name. [Optional]
receiver_name: Set receiver name. [Optional]
no_reply: Set Another Email To Reply [Optional]
subject: Message Title. [Optional]
message: Your Message. [Optional]
Expand Down Expand Up @@ -149,6 +151,7 @@ mail.about()
```

#### Changelogs

> > 2022.2.10 update:
> - Fix issue #3 TypeError on python < 3.10

Expand Down

0 comments on commit 6b65f62

Please sign in to comment.