J'utilise Spark comme application de messagerie sur iOS, mais parfois le courrier transféré n'est pas affiché dans le corps et est joint en tant que fichier .eml
. (Cela semble être causé par les paramètres du côté utilisateur de Thunderbird .-> Mozilla Question Box)
Ce fichier .eml
ne peut pas être ouvert directement sur l'iphone. Vous pouvez le voir en utilisant une application payante ou une page de conversion en ligne, mais c'est un peu gênant. Ceci est résolu avec un bot discord.
La source de ce bot discord est écrite en Python.
J'ai utilisé ce contenu pour le processus d'extraction du contenu du fichier .eml
. -> Qiita
--Lorsque vous envoyez un fichier .eml depuis votre smartphone vers le canal ou le DM où se trouve le robot discord, le fichier texte avec le contenu est envoyé à discord.
Le corps de l'e-mail ayant tendance à être long, je l'ai envoyé à Discord sous forme de fichier texte au lieu du contenu du message.
source
Sauf pour MailParser
, le contenu n'est pas si pertinent cette fois.
main.py
from MailParser import MailParser
import discord
from discord.ext import commands
description = ""
bot = commands.Bot(command_prefix="?", description=description)
@bot.event
async def on_ready():
print("Logged in as")
print(bot.user.name)
print(bot.user.id)
print("------")
Ajoutez-le également à la fin de on_message
dans @ bot.event
.
main.py
@bot.event
async def on_message(message):
#S'il y a un fichier joint
if (len(message.attachments) > 0):
for att in message.attachments:
#L'extension est.Déterminer si eml
file_extension = att.filename.split(".")[-1]
if file_extension == ".eml":
await read_eml(message.channel, await att.read())
Pour éviter les caractères déformés, il est encodé avec Shift-JIS.
main.py
async def read_eml(discord_channel, file_content: bytes):
"""Lire le fichier eml,Afficher le contenu"""
#eml lire
eml_result = MailParser(file_content).get_attr_data2()
#
file_path = f"{os.path.dirname(__file__)}/../out/eml.txt"
# shift-Si ce n'est pas le cas, les caractères seront déformés->Chrome-kun
with open(file=file_path, mode="w", encoding="shift-jis", errors="replace") as f:
f.write(eml_result["content"])
await discord_channel.send(file=discord.File(file_path))
for att in eml_result["attach"]:
with open(f"{os.path.dirname(__file__)}/../out/{att['name']}", "wb") as f:
f.write(att["data"])
await discord_channel.send(file=discord.File(att["name"]))
```
### Lire le contenu de eml (changer un peu MailParser)
Ajoutez un sujet au contenu et une méthode qui renvoie également le fichier joint.
#### **`main.py`**
```python
def get_attr_data2(self):
"""
Obtenir des données de messagerie
"""
mail_content = f"""\
SUBJECT: {self.subject}
----
FROM: {self.from_address}
TO: {self.to_address}
CC: {self.cc_address}
----
{self.body}
----
ATTACH_FILE_NAME:
{",".join([ s["name"] for s in self.attach_file_list])}
"""
return {"content":mail_content, "attach":self.attach_file_list}
setattr(MailParser, get_attr_data2.__name__, get_attr_data2)
```
## comment utiliser
1. Envoyez le fichier `.eml` du partage à Discord.
2. Le bot renvoie le fichier texte.
3. Ouvrez-le dans le navigateur et vous verrez le contenu.
![EML_view_ss.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306461/abad2fc7-a035-62e2-9fb1-caaf279a7f6d.png)
Recommended Posts