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