[PYTHON] Verwenden Sie Discord Bot, um .eml von Ihrem Smartphone zu lesen

Überblick

Ich verwende Spark als E-Mail-App unter iOS, aber manchmal wird die weitergeleitete E-Mail nicht im Text angezeigt und als EML-Datei angehängt. (Es scheint, dass dies durch Einstellungen auf der Thunderbird-Benutzerseite verursacht wird .-> Mozilla Question Box) Diese .eml-Datei kann nicht direkt auf dem iPhone geöffnet werden. Sie können es mithilfe einer kostenpflichtigen Anwendung oder einer Online-Conversion-Seite anzeigen, es ist jedoch etwas problematisch. Dies wird mit einem Zwietracht-Bot gelöst.

Die Quelle dieses Discord-Bots ist in Python geschrieben. Ich habe diesen Inhalt zum Extrahieren des Inhalts aus der .eml-Datei verwendet. -> Qiita

Zielfunktion

Da der Text der E-Mail in der Regel lang ist, habe ich ihn als Textdatei anstelle des Inhalts der Nachricht an discord gesendet.

source

Import etc.

Mit Ausnahme von "MailParser" sind die Inhalte diesmal nicht so relevant.

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("------")

Dateiempfang

Fügen Sie es auch am Ende von "on_message" in "@ bot.event" hinzu.

main.py


@bot.event
async def on_message(message):
    #Wenn eine angehängte Datei vorhanden ist
    if (len(message.attachments) > 0):
        for att in message.attachments:
            #Die Erweiterung ist.Bestimmen Sie, ob eml
            file_extension = att.filename.split(".")[-1]
            if file_extension == ".eml":
                await read_eml(message.channel, await att.read())

Senden Sie den Inhalt von eml

Um verstümmelte Zeichen zu vermeiden, wird es mit Shift-JIS codiert.

main.py


async def read_eml(discord_channel, file_content: bytes):
    """Eml-Datei lesen,Zeigen Sie den Inhalt an"""
    #eml lesen
    eml_result = MailParser(file_content).get_attr_data2()
    # 
    file_path = f"{os.path.dirname(__file__)}/../out/eml.txt"
    # shift-Wenn es nicht jis ist, werden die Zeichen verstümmelt->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"]))
```

### Lesen Sie den Inhalt von eml (ändern Sie MailParser ein wenig)

 Fügen Sie dem Inhalt einen Betreff und eine Methode hinzu, die auch die angehängte Datei zurückgibt.


#### **`main.py`**
```python

def get_attr_data2(self):
    """
Mail-Daten abrufen
    """
    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)
```

## wie benutzt man

 1. Senden Sie die .eml-Datei von der Freigabe an Discord.
 2. Der Bot sendet die Textdatei zurück.
 3. Öffnen Sie es im Browser und Sie werden den Inhalt sehen.

 ![EML_view_ss.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306461/abad2fc7-a035-62e2-9fb1-caaf279a7f6d.png)


Recommended Posts

Verwenden Sie Discord Bot, um .eml von Ihrem Smartphone zu lesen
Ich habe versucht, einen Übersetzungs-BOT zu erstellen, der mit Discord unter Verwendung von Googletrans funktioniert
Verbinden Sie Ihren Raspberry Pi mit Blynk mit Ihrem Smartphone
Erweitern Sie devicetree source include, um das Lesen zu vereinfachen
Eine Geschichte, die es ermöglichte, automatisch eine Anison-Wiedergabeliste aus Ihren Musikdateien zu erstellen
Versuchen Sie es mit GUI, PyQt in Python
Erstellen Sie die Word Cloud von Qiita aus Ihrem Browserverlauf
Machen wir einen Discord Bot.
Lesen Sie mit Raspberry Pi Ihre Schulregistrierungsnummer aus Ihrem Studentenausweis