ååãDropbox APIã䜿ã£ãŠãDropboxã«ããExcelãã¡ã€ã«ã宿çã«ã¡ãŒã«ããããŒã«ãäœã£ããååã¯æè»œã«äœ¿ããã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããŠéä¿¡ãè¡ãæ¹æ³ã玹ä»ãããä»åã¯ãååäœã£ãããã°ã©ã ãæ¹è¯ããŠé·æéã«æž¡ã£ãŠå®å®ããŠAPIã¢ã¯ã»ã¹ãè¡ãããã®ãªãã¬ãã·ã¥ããŒã¯ã³ãå©çšããæ¹æ³ã玹ä»ãããã
çåœã®ã¢ã¯ã»ã¹ããŒã¯ã³åé¡ã«ã€ããŠ
åå(é£èŒ135åç®)ã§ã¯ãDropbox APIã䜿ã£ãŠãã¡ã€ã«ãã¡ãŒã«ããã¹ã¯ãªãããäœæããããã®æãéçºè çšãµã€ãã§çæããã¢ã¯ã»ã¹ããŒã¯ã³ã䜿ã£ãŠããã¡ã€ã«ã®äžèЧãååŸãããããã¡ã€ã«ãããŠã³ããŒããããããŠã¿ããå°çšã¢ããªãã€ã³ã¹ããŒã«ãããããã©ãŠã¶ãéãããšãªãäœæ¥ãã§ããã®ã§ãèªååŠçãè¡ãã®ã«ãšãŠã䟿å©ã ã£ãã
ãšããããç¿æ¥ãåãããã°ã©ã ãå®è¡ããŠã¿ããšæ°ä»ãã®ã ãããAuthError('expired_access_token(ã¢ã¯ã»ã¹ããŒã¯ã³ã®æéåã)')ããšãããšã©ãŒãåºãŠããŸãããšã ãããå®ã¯ãDropboxã®APIã§ã¯ãã¢ã¯ã»ã¹ããŒã¯ã³ã䜿ã£ãŠãAPIã¢ã¯ã»ã¹ãè¡ãå Žåãæå¹æéãèšå®ãããŠããããã®æå¹æéãéãããšã䜿ããªããªã£ãŠããŸãã®ã ã
ãã®ãããé·æéã«æž¡ã£ãŠèªååŠçãè¡ãå ŽåãæŽæ°çšã®ãªãã¬ãã·ã¥ããŒã¯ã³ãååŸãããã®ããŒã¯ã³ãå©çšããŠãã¢ã¯ã»ã¹ããŒã¯ã³ãåååŸããåŠçãçµã¿èŸŒãå¿ èŠãããã
ãªãã¬ãã·ã¥ããŒã¯ã³ã«ã€ããŠ
ããã§ã¯ãã¢ã¯ã»ã¹ããŒã¯ã³ãšãªãã¬ãã·ã¥ããŒã¯ã³ã¯ã©ãéãã®ãããŸãšããŠã¿ããã
ãŸããã¢ã¯ã»ã¹ããŒã¯ã³ãšã¯ãDropbox APIã¢ã¯ã»ã¹ãè¡ãããã®ããŒã¯ã³ã§ãããæå¹æéãèšå®ãããŠãããã®ã ã
ããã«å¯ŸããŠããªãã¬ãã·ã¥ããŒã¯ã³ãšã¯ãã¢ã¯ã»ã¹ããŒã¯ã³ãæŽæ°ããããã®ããŒã¯ã³ã§ãããæå¹æéããªããã®ã ããªãã¬ãã·ã¥ããŒã¯ã³ãå©çšããŠãã¢ã¯ã»ã¹ããŒã¯ã³ãåååŸããããšãã§ããããã ãããªãã¬ãã·ã¥ããŒã¯ã³ãå©çšããŠãAPIã¢ã¯ã»ã¹ãè¡ãããšã¯ã§ããªãã
ããã§ãDropbox APIã¯ã©ã€ã¢ã³ãã¯ã次ã®å³ã®ããã«ããªãã¬ãã·ã¥ããŒã¯ã³ãå©çšããŠã¢ã¯ã»ã¹ããŒã¯ã³ãååŸãããã®ããŒã¯ã³ã䜿ã£ãŠDropboxã®ã¹ãã¬ãŒãžãããã¡ã€ã«ã®ååŸãªã©ãè¡ãããã ããã¢ã¯ã»ã¹ããŒã¯ã³ã¯æå¹æéãåãããšäœ¿ããªããªã£ãŠããŸããããã¢ã¯ã»ã¹ããŒã¯ã³ã®æå¹æéãåããå Žåã«ã¯ããªãã¬ãã·ã¥ããŒã¯ã³ãå©çšããŠã¢ã¯ã»ã¹ããŒã¯ã³ãåååŸããŠãããæ¹ããŠãã¡ã€ã«ãååŸãããšããæµãã«ãªãã
ã€ãŸãããªãã¬ãã·ã¥ããŒã¯ã³ãå©çšãããªããé·æéã«æž¡ã£ãŠå®å®ããŠAPIã¢ã¯ã»ã¹ãè¡ãããšãã§ããããã«ãªããšããããšã ã
ãªããPythonã®Dropboxããã±ãŒãžã䜿ããšãäžèšã®åŠçãé èœããŠãããã®ã§ããšãŠã䟿å©ã ããã ãããã®å Žåã§ãããªãã¬ãã·ã¥ããŒã¯ã³èªäœã¯ãäºåã«ååŸããŠããå¿ èŠãããã
ãªãã¬ãã·ã¥ããŒã¯ã³ãååŸããããã®æºåãããã
ããã§ã¯ããªãã¬ãã·ã¥ããŒã¯ã³ãååŸããããã«å¿ èŠãªæ å ±ããDropboxã®éçºè çšãµã€ãããååŸãããããŸãã¯ããã¡ãã®Dropboxã®éçºè çšãµã€ãã«ã¢ã¯ã»ã¹ããååäœæããã¢ããªãéžæãããã
ãããŠãããŒ(App key)ãšã·ãŒã¯ã¬ãã(App secret)ãã³ããŒãããããªããã·ãŒã¯ã¬ããã¯é ãããŠããã®ã§ã衚瀺ãããŠããã³ããŒããå¿ èŠãããã
ååŸããããŒãšã·ãŒã¯ã¬ãããããããããç°å¢å€æ°ã®DROPBOX_APP_KEYãšDROPBOX_APP_SECRETã«èšå®ããŠãããã
Windowsã®å Žåã¯ãã³ã³ãããŒã«ããã«ã®ãã·ã¹ãã ãšã»ãã¥ãªãã£ãâãã·ã¹ãã ãâãã·ã¹ãã ã®è©³çްèšå®ãâãç°å¢å€æ°ãããããŠãŒã¶ãŒç°å¢å€æ°ã«æ°ãã倿°ã远å ããŠèšå®ããããšãã§ããã
macOSãLinuxã®å Žåã¯ãã·ã§ã«ã®èšå®ãã¡ã€ã«(äŸãã°ãmacOSãªãã~/.zshrcããLinuxãªãã~/.bashrcã)ã«ä»¥äžã®å 容ãèšè¿°ããããšã§ç°å¢å€æ°ãèšå®ããããšãã§ããããã¡ã€ã«ã倿Žãããããsource ~/.zshrcããããã¯ãsource ~/.bashrcãã³ãã³ããå®è¡ããŠã倿Žãåæ ãããŠãããã
export DROPBOX_APP_KEY="ããã«ããŒ"
export DROPBOX_APP_SECRET="ããã«ã·ãŒã¯ã¬ãã"
ãªãã¬ãã·ã¥ããŒã¯ã³ãååŸããããã®ããã°ã©ã ãäœãã
以äžã§ãé·æéã®èªååŠçã®ããã«å¿ èŠãªãªãã¬ãã·ã¥ããŒã¯ã³ãååŸããããã®æºåãæŽã£ããæ¬¡ã«ããªãã¬ãã·ã¥ããŒã¯ã³ãååŸããç°¡åãªããã°ã©ã ãäœã£ãŠã¿ãããæ¬¡ã®ããã°ã©ã ããdropbox_auth.pyããšããååã§ä¿åãããã
"""Dropboxã®ãªãã¬ãã·ã¥ããŒã¯ã³ãååŸããããã®ã¹ã¯ãªãã"""
import os
import requests
import sys
# ç°å¢å€æ°ããããŒãååŸãã --- (â»1)
DROPBOX_APP_KEY = os.getenv("DROPBOX_APP_KEY", "")
DROPBOX_APP_SECRET = os.getenv("DROPBOX_APP_SECRET", "")
if not (DROPBOX_APP_KEY and DROPBOX_APP_SECRET):
print("ç°å¢å€æ° DROPBOX_APP_KEY ãš DROPBOX_APP_SECRET ãèšå®ããŠãã ããã")
sys.exit(1)
def get_refresh_token() -> str:
"""(1) Dropbox ã®èªå¯ã³ãŒãååŸçšURLã衚瀺ãã""" # --- (â»2)
url_reftoken = f"https://www.dropbox.com/oauth2/authorize?client_id={DROPBOX_APP_KEY}&response_type=code&token_access_type=offline"
print("以äžã®URLã«ã¢ã¯ã»ã¹ããŠèªå¯ã³ãŒããååŸããŠãã ãã:", url_reftoken)
code = input("èªå¯ã³ãŒããå
¥åããŠãã ãã: ").strip()
return code
def get_dropbox_token(app_key: str, app_secret: str, auth_code: str) -> dict:
"""(2) èªå¯ã³ãŒããããªãã¬ãã·ã¥ããŒã¯ã³ãååŸãã""" # --- (â»3)
# URLãšãã©ã¡ãŒã¿ãæºå
url = "https://api.dropbox.com/oauth2/token"
data = {
"code": auth_code,
"grant_type": "authorization_code",
"client_id": app_key,
"client_secret": app_secret,
}
# POSTãªã¯ãšã¹ããéä¿¡ããŠããŒã¯ã³ãååŸ --- (â»4)
response = requests.post(url, data=data, timeout=30)
print("status =", response.status_code)
print("body =", response.text)
response.raise_for_status()
obj = response.json()
return {
"access_token": obj.get("access_token", ""),
"refresh_token": obj.get("refresh_token", ""),
}
def dropbox_auth_flow():
"""Dropboxã®èªå¯ã³ãŒãååŸããããŒã¯ã³ååŸãŸã§ã®ãããŒ""" # --- (â»5)
code = get_refresh_token()
token_data = get_dropbox_token(DROPBOX_APP_KEY, DROPBOX_APP_SECRET, code)
print("Dropboxã®ã¢ã¯ã»ã¹ããŒã¯ã³ãšãªãã¬ãã·ã¥ããŒã¯ã³ãååŸããŸããã")
print("ãã®å€ãç°å¢å€æ°(DROPBOX_REFRESH_TOKEN)ã«èšå®ããŠããããã°ã©ã ãå®è¡ããŠãã ããã")
print("refresh_token:", token_data.get("refresh_token", ""))
if __name__ == "__main__":
dropbox_auth_flow()
æåã«ãããã°ã©ã ã確èªãããã(â»1)ã§ã¯ãç°å¢å€æ°ããããŒãååŸããŠãããããã«ãããã³ãŒãã«ããŒãçŽæ¥æžããªããŠããç°å¢å€æ°ãèšå®ããã ãã§åäœããããã«ãªãã(â»2)ã§ã¯ãèªå¯ã³ãŒããååŸããããã®URLã衚瀺ããŠããããŠãŒã¶ãŒã¯ãã®URLã«ã¢ã¯ã»ã¹ããŠãDropboxã®èªå¯ç»é¢ã§èš±å¯ãäžãããšãèªå¯ã³ãŒããçºè¡ãããã®ã§ããããå ¥åããå¿ èŠãããã(â»3)ã§ã¯ãèªå¯ã³ãŒããããªãã¬ãã·ã¥ããŒã¯ã³ãååŸããããã®é¢æ°ãå®çŸ©ããŠããã(â»4)ã§ã¯ãPOSTãªã¯ãšã¹ããéä¿¡ããŠããŒã¯ã³ãååŸããŠããã(â»5)ã§ã¯ãèªå¯ã³ãŒãã®ååŸããããŒã¯ã³ã®ååŸãŸã§ã®ãããŒããŸãšããŠããã
ããã§ã¯ãããã°ã©ã ãå®è¡ããããã¿ãŒããã«(WindowsãªãPowerShellãmacOS/Linuxãªãã¿ãŒããã«)ã§äžèšã®ã³ãã³ããå®è¡ãããã
# äŸåã©ã€ãã©ãªã®requestsãã€ã³ã¹ããŒã«
python -m pip install requests
# ããã°ã©ã ãå®è¡
python dropbox_auth.py
ãã®ããã°ã©ã ãå®è¡ãããšãèªå¯ã³ãŒããååŸããããã®URLã衚瀺ãããã®ã§ããã©ãŠã¶ãèµ·åããŠããã®URLã«ã¢ã¯ã»ã¹ãããããããšDropboxã®ãã°ã€ã³ç»é¢ãåºãã®ã§ãã°ã€ã³ãããããããšã次ã®ç»é¢ã衚瀺ãããã®ã§ãç¶è¡ããã¿ã³ãæŒããããããšãèªå¯ã³ãŒãã衚瀺ãããããªããæ°ãã€ãããç¹ã ããããã§è¡šç€ºãããã³ãŒãã¯ããªãã¬ãã·ã¥ããŒã¯ã³ãåŸãããã ãã®èªå¯ã³ãŒãã§ããããªãã¬ãã·ã¥ããŒã¯ã³ã§ã¯ãªãã®ã§æ³šæãããã
-

ããã°ã©ã ãå®è¡ãããšè¡šç€ºãããURLã«ãã©ãŠã¶ã§ã¢ã¯ã»ã¹ããŠèªå¯ã³ãŒããååŸããã
ãããŠããã®èªå¯ã³ãŒããã¿ãŒããã«ã«è²Œãä»ããŠ[Enter]ããŒãæŒããããããšãPythonã®ããã°ã©ã ããDropbox APIã«ã¢ã¯ã»ã¹ãè¡ãããããã§ã¯ãããŠãªãã¬ãã·ã¥ããŒã¯ã³ãååŸããããšãã§ããã
ããã§ååŸãããªãã¬ãã·ã¥ããŒã¯ã³ã¯ãç°å¢å€æ°ãDROPBOX_REFRESH_TOKENãã«èšå®ããããããã«ãããæ¬¡å以éã®ããã°ã©ã ã§å©çšããããšãã§ããããã«ãªãã
å ã»ã©ãšåãããã«ãWindowsã§ããã°ãã³ã³ãããŒã«ããã«ã®ãã·ã¹ãã ãšã»ãã¥ãªãã£ãâãã·ã¹ãã ãâãã·ã¹ãã ã®è©³çްèšå®ãâãç°å¢å€æ°ããããmacOS/Linuxã§ããã°ã·ã§ã«ã®èšå®ãã¡ã€ã«ã«ä»¥äžã®å 容ã远å ãããã
export DROPBOX_REFRESH_TOKEN="ããã«ãªãã¬ãã·ã¥ããŒã¯ã³"
ãããŸã§ããããããªã³ãŒããããŒã¯ã³ãåºãŠããã®ã§ã衚ã«ãŸãšããŠã¿ããã
| ããŒã¯ã³ã®çš®é¡ | æå¹æé | çšé |
|---|---|---|
| èªå¯ã³ãŒã (auth_code) | æ°åéïŒ1åéã) | ãªãã¬ãã·ã¥ããŒã¯ã³ãšäº€æããããã«äœ¿çš |
| ãªãã¬ãã·ã¥ããŒã¯ã³ | ç¡æéïŒå€±å¹ããããŸã§ïŒ | æ°ããã¢ã¯ã»ã¹ããŒã¯ã³ãçºè¡ããããã«äœ¿çš |
| ã¢ã¯ã»ã¹ããŒã¯ã³ | çã(æ°æéçšåºŠ) | å®éã®ãã¡ã€ã«æäœïŒAPIåŒã³åºãïŒã«äœ¿çš |
ãªãã¬ãã·ã¥ããŒã¯ã³ãå©çšãããã¡ã€ã«äžèЧã®ååŸããã°ã©ã
ããã§ããªãã¬ãã·ã¥ããŒã¯ã³ãå©çšããããã°ã©ã ãäœæããæºåãæŽã£ããååäœæãããã¡ã€ã«äžèЧãååŸããããã°ã©ã ãããªãã¬ãã·ã¥ããŒã¯ã³ãå©çšããããã«æ¹è¯ããŠã¿ãããæ¬¡ã®ã³ãŒãããdropbox_list_files.pyããšããååã§ä¿åãããã
"""ãã¡ã€ã«äžèЧãååŸããã¹ã¯ãªãã(ãªãã¬ãã·ã¥ããŒã¯ã³å¯Ÿå¿ç)"""
import os
import sys
import dropbox
# ç°å¢å€æ°ããããŒãšãªãã¬ãã·ã¥ããŒã¯ã³ãååŸãã --- (â»1)
DROPBOX_APP_KEY = os.getenv("DROPBOX_APP_KEY", "")
DROPBOX_APP_SECRET = os.getenv("DROPBOX_APP_SECRET", "")
DROPBOX_REFRESH_TOKEN = os.getenv("DROPBOX_REFRESH_TOKEN", "")
if not (DROPBOX_APP_KEY and DROPBOX_APP_SECRET and DROPBOX_REFRESH_TOKEN):
print("ç°å¢å€æ° DROPBOX_APP_KEY, DROPBOX_APP_SECRET, DROPBOX_REFRESH_TOKEN ãèšå®ããŠãã ããã")
sys.exit(1)
# Dropboxã¯ã©ã€ã¢ã³ããåæåãã --- (â»2)
dbx = dropbox.Dropbox(
app_key=DROPBOX_APP_KEY,
app_secret=DROPBOX_APP_SECRET,
oauth2_refresh_token=DROPBOX_REFRESH_TOKEN,
)
# ã«ãŒãã®ãã¡ã€ã«äžèЧãåŸã --- (â»3)
for f in dbx.files_list_folder(path="").entries:
if isinstance(f, dropbox.files.FileMetadata):
print("- ãã¡ã€ã«:", f.name)
elif isinstance(f, dropbox.files.FolderMetadata):
print("- ãã©ã«ã:", f.name)
ããã°ã©ã ã確èªããŠã¿ããã(â»1)ã§ã¯ãç°å¢å€æ°ããããŒãšãªãã¬ãã·ã¥ããŒã¯ã³ãååŸããŠããã(â»2)ã§ã¯ãDropboxã¯ã©ã€ã¢ã³ããåæåããŠãããããã§ããªãã¬ãã·ã¥ããŒã¯ã³ãæž¡ãããšã§ãã¢ã¯ã»ã¹ããŒã¯ã³ã®æå¹æéãåããå Žåã«ãèªåçã«ãªãã¬ãã·ã¥ããŒã¯ã³ã䜿ã£ãŠã¢ã¯ã»ã¹ããŒã¯ã³ãåååŸããæ©èœãæå¹ã«ãªãã(â»3)ã§ã¯ãã«ãŒãã®ãã¡ã€ã«äžèЧãååŸããŠè¡šç€ºããŠããã
ããã°ã©ã ãå®è¡ããã«ã¯ãã¿ãŒããã«ã§äžèšã®ã³ãã³ããå®è¡ãããã
# äŸåã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«
python -m pip install dropbox
# ããã°ã©ã ãå®è¡
python dropbox_list_files.py
ãã®ããã°ã©ã ãå®è¡ãããšãDropboxã®ã«ãŒãã«ãããã¡ã€ã«ãšãã©ã«ãã®äžèЧã衚瀺ãããã¯ãã ãããã§ããªãã¬ãã·ã¥ããŒã¯ã³ãå©çšããŠãã¢ã¯ã»ã¹ããŒã¯ã³ãèªåçã«æŽæ°ããããã«æ¹è¯ãããã¡ã€ã«äžèЧååŸããã°ã©ã ã宿ããã
ååäœæããããã°ã©ã ãšèŠæ¯ã¹ãŠã¿ããšåããããDropboxã¯ã©ã€ã¢ã³ãã®åæåã®éšåãå°ãå€ãã£ãŠããã ãã§ãããšã¯ã»ãšãã©åãã³ãŒãã§ãã¡ã€ã«äžèЧãååŸã§ããŠããããšãåããã ãããããã§ãã¢ã¯ã»ã¹ããŒã¯ã³ã®æå¹æéãæ°ã«ããã«ãé·æéã«æž¡ã£ãŠå®å®ããŠAPIã¢ã¯ã»ã¹ãè¡ãããšãã§ããããã«ãªã£ãã
ã¡ãŒã«éä¿¡ã¹ã¯ãªãã
ããã§ã¯ãååã®ããã°ã©ã ãæ¹é ããŠããªãã¬ãã·ã¥ããŒã¯ã³ã«å¯Ÿå¿ããã¹ã¯ãªãããäœã£ãŠã¿ããããdropbox_send.pyããšããååã§ä¿åãããããªãã以äžãšåããã®ããã¡ãã«ãã¢ããããŒãããŠããã
"""Dropboxãããã¡ã€ã«ãããŠã³ããŒãããŠGmailã§éä¿¡"""
import os
import dropbox
import smtplib
from email.message import EmailMessage
import sys
# 宿°ã®èšå® --- (â»1)
MAIL_TO = "mail@example.com" # â
èŠå€æŽ - ã¡ãŒã«ãéä¿¡ããå®å
ãæå®
DROPBOX_FILE = "/売äžããŒã¿.xlsx" # â
èŠå€æŽ - éä¿¡ããããã¡ã€ã«
DIR_ROOT = os.path.dirname(os.path.abspath(__file__))
LOCAL_FILE = os.path.join(DIR_ROOT, "売äžããŒã¿.xlsx")
# ç°å¢å€æ°ããããŒã¯ã³ãªã©ãèªã¿åã --- (â»2)
DROPBOX_APP_KEY = os.getenv("DROPBOX_APP_KEY", "")
DROPBOX_APP_SECRET = os.getenv("DROPBOX_APP_SECRET", "")
DROPBOX_REFRESH_TOKEN = os.getenv("DROPBOX_REFRESH_TOKEN", "")
GMAIL_ACCOUNT = os.getenv("GMAIL_ACCOUNT", "")
GMAIL_PASSWORD = os.getenv("GMAIL_PASSWORD", "")
if not (DROPBOX_APP_KEY and DROPBOX_APP_SECRET and DROPBOX_REFRESH_TOKEN):
print("ç°å¢å€æ° DROPBOX_APP_KEY, DROPBOX_APP_SECRET, DROPBOX_REFRESH_TOKEN ãèšå®ããŠãã ããã")
sys.exit(1)
if not (GMAIL_ACCOUNT and GMAIL_PASSWORD):
print("ç°å¢å€æ° GMAIL_ACCOUNT, GMAIL_PASSWORD ãèšå®ããŠãã ããã")
sys.exit(1)
def main():
"""ã¡ã€ã³åŠç""" # --- (â»3)
if download_file(LOCAL_FILE, DROPBOX_FILE):
send_mail()
else:
print("ãã¡ã€ã«ã®ããŠã³ããŒãã«å€±æãããããã¡ãŒã«ã¯éä¿¡ããŸããã§ããã")
def download_file(local_path, dropbox_path) -> bool:
"""Dropboxãããã¡ã€ã«ãããŠã³ããŒããã""" # --- (â»4)
dbx = dropbox.Dropbox(
app_key=DROPBOX_APP_KEY,
app_secret=DROPBOX_APP_SECRET,
oauth2_refresh_token=DROPBOX_REFRESH_TOKEN,
)
try:
dbx.files_download_to_file(local_path, dropbox_path)
print("ãã¡ã€ã«ãããŠã³ããŒãããŸãã:", dropbox_path)
return True
except dropbox.exceptions.ApiError as err:
print(f"APIãšã©ãŒãçºçããŸãã: {err}")
return False
def send_mail():
"""GMAILã§ã¡ãŒã«éä¿¡""" # --- (â»5)
msg = EmailMessage()
msg["From"] = GMAIL_ACCOUNT # éãäž»
msg["To"] = MAIL_TO # éãå
# ä»¶åã®æå®
msg["Subject"] = "DropboxããããŠã³ããŒããããã¡ã€ã«"
# æ¬æã®æå®
msg.set_content("DropboxããããŠã³ããŒããããã¡ã€ã«ãæ·»ä»ããŸãã")
with open(LOCAL_FILE, "rb") as f:
msg.add_attachment(f.read(),
maintype="application",
subtype="octet-stream",
filename=os.path.basename(LOCAL_FILE))
try:
# ãã°ã€ã³ããŠéä¿¡ --- (â»6)
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
smtp.login(GMAIL_ACCOUNT, GMAIL_PASSWORD)
smtp.send_message(msg)
print("ã¡ãŒã«ãéä¿¡ããŸããïŒ")
except Exception as e:
print(f"ã¡ãŒã«éä¿¡äžã«ãšã©ãŒãçºçããŸãã: {e}")
if __name__ == "__main__":
main()
ãã®ããã°ã©ã ãå®è¡ããã«ã¯ãã¿ãŒããã«ã§äžèšã®ã³ãã³ããå®è¡ãããããªããååã®å 容ãå ã«ãGmailã®ã¡ãŒã«ã¢ãã¬ã¹ãšã¢ããªãã¹ã¯ãŒããç°å¢å€æ°ã«èšå®ããŠããå¿ èŠãããããŸããã¡ãŒã«ã®éä¿¡å (â»1)ãDropboxã®ãã¡ã€ã«ãã¹ã®å®æ°ã倿Žããã®ãå¿ããªãããã«ãããã
python dropbox_send.py
ããã°ã©ã ãå®è¡ãããšã次ã®ç»é¢ã®ããã«ãDropboxãããã¡ã€ã«ãããŠã³ããŒããããŠãGmailã§ã¡ãŒã«ãéä¿¡ãããã
-

ããã°ã©ã ãå®è¡ãããšDropboxãããã¡ã€ã«ãããŠã³ããŒãããŠã¡ãŒã«ãã
ç°¡åã«ããã°ã©ã ã確èªããŠã¿ããã(â»1)ã§ã¯ãã¡ãŒã«ã®å®å ããDropboxããããŠã³ããŒããããã¡ã€ã«ã®ãã¹ãªã©ã®å®æ°ãèšå®ããŠããã(â»2)ã§ã¯ãç°å¢å€æ°ããããŒããªãã¬ãã·ã¥ããŒã¯ã³ãGmailã®ã¢ã«ãŠã³ãæ å ±ãååŸããŠããã(â»3)ã§ã¯ãã¡ã€ã³åŠçãå®çŸ©ããŠããã(â»4)ã§ã¯ãDropboxãããã¡ã€ã«ãããŠã³ããŒããã颿°ãå®çŸ©ããŠããã(â»5)ã§ã¯ãGmailã§ã¡ãŒã«éä¿¡ãã颿°ãå®çŸ©ããŠããã(â»6)ã§ã¯ãSMTPãµãŒããŒã«ãã°ã€ã³ããŠã¡ãŒã«ãéä¿¡ããŠããã
ãŸãšã
以äžããªãã¬ãã·ã¥ããŒã¯ã³ãå©çšããŠãDropboxãããã¡ã€ã«ãããŠã³ããŒãããGmailã§éä¿¡ããã¹ã¯ãªããã宿ãããããã§ãã¢ã¯ã»ã¹ããŒã¯ã³ã®æå¹æéãæ°ã«ããã«ãé·æéã«æž¡ã£ãŠå®å®ããŠAPIã¢ã¯ã»ã¹ãè¡ãããšãã§ããããã«ãªã£ããããã§ãããå®è·µçãªèªååŠçãè¡ãããã®åºç€ãã§ããããããããŒã¹ã«ããŠãã¹ã¯ãªãããæ¹è¯ããŠãèªåã®ããŒãºã«åã£ãèªååŠçãäœã£ãŠã¿ããã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿èªå®ã2010幎 OSSè²¢ç®è ç« åè³ããããŸã§50å以äžã®æè¡æžãå·çãããçŽè¿ã§ã¯ããå€§èŠæš¡èšèªã¢ãã«ã䜿ãããªãããã®ããã³ãããšã³ãžãã¢ãªã³ã°ã®æç§æž(ãã€ããåºç)ããPythonã§ã€ãããã¹ã¯ãããã¢ããª(ãœã·ã )ããå®è·µåã身ã«ã€ãã Pythonã®æç§æž 第2çããã·ãŽããã¯ãã©ã PythonèªååŠçã®æç§æž(ãã€ããåºç)ããªã©ã



