내 워크플로 2
중급
이것은File Management, Multimodal AI분야의자동화 워크플로우로, 15개의 노드를 포함합니다.주로 Ftp, Set, Filter, EmailSend, ScheduleTrigger 등의 노드를 사용하며. 스마트 정리 및 이메일 알림이 포함된 자동 FTP 파일 마이그레이션
사전 요구사항
- •특별한 사전 요구사항 없이 가져와 바로 사용 가능합니다
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "DaJFVETQef5qJMmB",
"meta": {
"instanceId": "ade915387b18f7a3b9a14fd8fb677fdbace0ade794de7914e8790d907cd285d0",
"templateCredsSetupCompleted": true
},
"name": "My workflow 2",
"tags": [],
"nodes": [
{
"id": "dafe14b7-7719-41b7-b1a4-cf6765aa3db9",
"name": "스티커 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
-144
],
"parameters": {
"width": 400,
"height": 712,
"content": "# 🚀 FTP FILE MIGRATION WORKFLOW\n\n## Overview:\nAutomated file transfer between FTP servers with comprehensive error handling and notifications.\n\n## Key Features:\n✅ Scheduled execution (daily at 2 AM)\n✅ Smart file filtering\n✅ Secure transfer with validation\n✅ Source cleanup after success\n✅ Email notifications (success + error)\n✅ Comprehensive logging\n\n## Quick Start:\n1. Configure FTP credentials\n2. Adjust schedule and filters\n3. Set up email notifications\n4. Test with small files first\n5. Monitor execution logs\n\n⚠️ **IMPORTANT**: Test thoroughly before production!"
},
"typeVersion": 1
},
{
"id": "f460e190-0e9f-4fb9-b023-2b4d37988a37",
"name": "파일 처리",
"type": "n8n-nodes-base.stickyNote",
"position": [
608,
144
],
"parameters": {
"width": 380,
"height": 280,
"content": "## 📁 FILE PROCESSING PIPELINE\n\n### Current Filter: \n**Text & Data Files Only**\n- .txt, .csv, .json, .xml\n\n### Common Alternatives:\n📄 **Documents**: `\\.(pdf|doc|docx)$`\n🖼️ **Images**: `\\.(jpg|jpeg|png|gif)$`\n📊 **Data**: `\\.(csv|json|xml|xlsx)$`\n📦 **Archives**: `\\.(zip|rar|7z|tar)$`\n🎵 **Media**: `\\.(mp4|mp3|avi|mov)$`\n\n### Size Limits:\n- Small: < 10MB\n- Medium: 10MB - 100MB \n- Large: > 100MB (adjust timeouts)\n\n### Processing Order:\n1️⃣ List files from source\n2️⃣ Filter by criteria\n3️⃣ Download to temp storage\n4️⃣ Upload to destination\n5️⃣ Validate transfer\n6️⃣ Clean up source\n\n🔄 **Remove Filter node to transfer ALL files**"
},
"typeVersion": 1
},
{
"id": "d92ebb39-8697-4137-8770-dddf0cc3412a",
"name": "보안",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
592
],
"parameters": {
"width": 382,
"height": 792,
"content": "## 🔒 SECURITY BEST PRACTICES\n\n### Connection Security:\n🔐 **Use SFTP** instead of FTP (port 22)\n🔑 **SSH Keys** preferred over passwords\n🌐 **IP Whitelisting** on FTP servers\n🔒 **VPN/Tunnel** for sensitive data\n\n### Credential Management:\n🗝️ **Dedicated Service Accounts**\n🔄 **Regular Rotation** (monthly/quarterly)\n📝 **Minimum Permissions** (read source, write dest)\n🚫 **No Shared Accounts**\n\n### Data Protection:\n🔐 **Encryption in Transit** (TLS/SSL)\n🗂️ **File Integrity Checks** (checksums)\n📋 **Audit Logging** (all operations)\n🕐 **Retention Policies** (log cleanup)\n\n### Access Control:\n👤 **Role-Based Access**\n🚪 **Principle of Least Privilege**\n📊 **Access Reviews** (quarterly)\n🔍 **Activity Monitoring**\n\n### Compliance:\n📜 **GDPR/CCPA** considerations\n📋 **SOX/HIPAA** requirements\n🏢 **Corporate Policies**\n📝 **Documentation Requirements**"
},
"typeVersion": 1
},
{
"id": "42886faa-e0ec-4ccc-9bcf-fa289f27fea7",
"name": "성능",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
-144
],
"parameters": {
"width": 444,
"height": 568,
"content": "## ⚡ PERFORMANCE OPTIMIZATION\n\n### File Size Considerations:\n📄 **Small Files** (< 10MB): Default settings\n📊 **Medium Files** (10-100MB): Increase timeouts\n📦 **Large Files** (> 100MB): Extended timeouts + monitoring\n🎬 **Huge Files** (> 1GB): Consider alternative methods\n\n### Timeout Settings:\n⏰ **Connection**: 30 seconds\n⏰ **Download**: 300 seconds (5 min)\n⏰ **Upload**: 300 seconds (5 min)\n⏰ **Large Files**: 600+ seconds (10+ min)\n\n### Network Optimization:\n🌐 **Peak Hours**: Schedule during off-peak\n📊 **Bandwidth**: Monitor usage patterns\n🔄 **Parallel Processing**: For multiple files\n📈 **Resume Support**: For interrupted transfers\n\n\n\n🎯 **Target**: < 5 min per 100MB file"
},
"typeVersion": 1
},
{
"id": "51afbebf-2431-4d08-bd8e-74c0a9072eb1",
"name": "문제 해결",
"type": "n8n-nodes-base.stickyNote",
"position": [
2304,
-128
],
"parameters": {
"width": 480,
"height": 912,
"content": "## 🔧 TROUBLESHOOTING GUIDE\n\n### Common Issues & Solutions:\n\n🔌 **Connection Failures:**\n- Check server status & firewall\n- Verify credentials & permissions\n- Test network connectivity\n- Review SSL/TLS settings\n\n⏱️ **Timeout Errors:**\n- Increase timeout values\n- Check file sizes vs. settings\n- Monitor network speed\n- Split large transfers\n\n🔑 **Authentication Issues:**\n- Verify username/password\n- Check account lockouts\n- Test credential expiration\n- Review permission changes\n\n📁 **File Operation Errors:**\n- Confirm file existence\n- Check read/write permissions\n- Verify disk space availability\n- Test file locking status\n\n💾 **Memory/Performance:**\n- Monitor n8n server resources\n- Adjust concurrent executions\n- Implement file size limits\n- Consider batch processing\n\n### Debug Steps:\n1️⃣ **Check Logs**: Execution history\n2️⃣ **Test Credentials**: Manual FTP connection\n3️⃣ **Verify Paths**: Directory structure\n4️⃣ **Network Test**: Ping/telnet servers\n5️⃣ **Resource Check**: CPU/Memory/Disk\n\n📞 **Escalation**: Contact system administrators"
},
"typeVersion": 1
},
{
"id": "d57222c3-5f3b-45ec-8410-3f49675bdf9b",
"name": "구성",
"type": "n8n-nodes-base.stickyNote",
"position": [
1136,
96
],
"parameters": {
"width": 380,
"height": 320,
"content": "## ⚙️ CONFIGURATION CHECKLIST\n\n### Pre-Deployment:\n☐ **FTP Credentials**: Source & destination tested\n☐ **SMTP Settings**: Email notifications configured\n☐ **File Filters**: Appropriate patterns set\n☐ **Paths**: Source & destination directories verified\n☐ **Schedule**: Cron expression configured\n☐ **Timeouts**: Adjusted for expected file sizes\n☐ **Permissions**: Read source, write destination\n☐ **Network**: Connectivity between all systems\n\n### Testing Phase:\n☐ **Disable Cleanup**: Comment out source deletion\n☐ **Small Files**: Test with 1-2 small files first\n☐ **Error Scenarios**: Test failure conditions\n☐ **Email Alerts**: Verify notifications work\n☐ **Logs Review**: Check execution history\n☐ **Performance**: Monitor transfer speeds\n\n### Production Deployment:\n☐ **Enable Cleanup**: Activate source deletion\n☐ **Monitor First Run**: Watch initial execution\n☐ **Set Alerts**: Configure monitoring thresholds\n☐ **Document Config**: Save settings & passwords\n☐ **Schedule Review**: Confirm timing works\n☐ **Backup Strategy**: Plan for rollback\n\n### Post-Deployment:\n☐ **Daily Monitoring**: Check success rates\n☐ **Weekly Reviews**: Analyze performance\n☐ **Monthly Audits**: Security & compliance\n☐ **Quarterly Updates**: Credential rotation"
},
"typeVersion": 1
},
{
"id": "fd89ccc8-f083-4241-a869-dca7690bc591",
"name": "일일 스케줄 (오전 2시)",
"type": "n8n-nodes-base.scheduleTrigger",
"notes": "SCHEDULE TRIGGER CONFIGURATION:\n\n📅 CURRENT SCHEDULE: Daily at 2:00 AM (server time)\n\n⏰ SCHEDULE EXAMPLES:\n- Daily at specific time: 0 2 * * *\n- Every 6 hours: 0 */6 * * *\n- Weekdays at 8 AM: 0 8 * * 1-5\n- Weekly on Sunday 2 AM: 0 2 * * 0\n- Monthly on 1st at midnight: 0 0 1 * *\n\n🔧 CONFIGURATION STEPS:\n1. Click on this node to edit\n2. Modify 'Cron Expression' field\n3. Use cron expression generator if needed\n4. Test with 'Execute Node' button\n\n⚠️ IMPORTANT CONSIDERATIONS:\n- Server timezone affects execution time\n- Consider maintenance windows\n- Avoid peak business hours\n- Account for server load and resources\n- Plan for daylight saving time changes\n\n💡 TESTING TIP:\n- Use '*/5 * * * *' for every 5 minutes during testing\n- Change back to production schedule after validation\n\n🌍 TIMEZONE SETTINGS:\n- Current: Europe/Warsaw (GMT+1/+2)\n- Modify in workflow settings if needed\n- Ensure consistency across all environments",
"position": [
288,
512
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 2 * * *"
}
]
}
},
"typeVersion": 1
},
{
"id": "0be802db-9255-45b5-8c93-ca85087969e5",
"name": "파일 목록 - 원본 FTP",
"type": "n8n-nodes-base.ftp",
"notes": "SOURCE FTP SERVER CONFIGURATION:\n\n🔑 CREDENTIALS SETUP:\n1. Navigate to: Settings → Credentials → Create New\n2. Select 'FTP' credential type\n3. Name: 'Source FTP Server'\n4. Enter connection details:\n - Host: source-ftp-server.com\n - Port: 21 (FTP) or 22 (SFTP)\n - Username: your_username\n - Password: your_password\n5. Test connection before saving\n\n📁 PATH CONFIGURATION:\n- Absolute path: /home/user/files/\n- Relative path: files/folder/\n- Root directory: /\n- Current example: /source/directory/\n\n🔍 OPERATION SETTINGS:\n- Operation: 'List' (to discover files)\n- Recursive: true (includes subdirectories)\n- Returns file metadata: name, size, date, permissions\n\n⚙️ ADVANCED OPTIONS:\n- Connection timeout: 30 seconds (default)\n- Data timeout: 60 seconds\n- Keep connection alive: true\n- Passive mode: true (recommended)\n\n🛡️ SECURITY RECOMMENDATIONS:\n- Use SFTP (port 22) when possible\n- Enable key-based authentication\n- Implement IP whitelisting\n- Use dedicated service accounts\n- Regular credential rotation\n\n🐛 TROUBLESHOOTING:\n- Connection timeout: Check firewall settings\n- Permission denied: Verify user permissions\n- Path not found: Ensure directory exists\n- Authentication failed: Check credentials\n\n📊 EXPECTED OUTPUT:\n- Array of file objects\n- Each object contains: name, size, date, type\n- Empty array if no files found",
"position": [
512,
512
],
"parameters": {
"path": "/source/directory/",
"options": {}
},
"typeVersion": 1
},
{
"id": "0915fba4-e8a7-4070-bfe6-03d594163495",
"name": "파일 필터링",
"type": "n8n-nodes-base.filter",
"notes": "FILE FILTERING & SELECTION:\n\n🔍 CURRENT FILTER LOGIC:\n- File Extension Match: \\.(txt|csv|json|xml)$\n- Case-sensitive matching enabled\n- Regex pattern matching\n\n📝 COMMON FILTER PATTERNS:\n\n📄 DOCUMENTS:\n- Office files: \\.(doc|docx|xls|xlsx|ppt|pptx)$\n- PDF files: \\.pdf$\n- Text files: \\.(txt|rtf|md)$\n\n🖼️ IMAGES:\n- Common formats: \\.(jpg|jpeg|png|gif|bmp)$\n- High-res images: \\.(tiff|tga|raw)$\n- Vector graphics: \\.(svg|eps|ai)$\n\n📊 DATA FILES:\n- Structured data: \\.(csv|json|xml|yaml)$\n- Database files: \\.(sql|db|sqlite)$\n- Log files: \\.(log|txt)$\n\n📦 ARCHIVES:\n- Compressed files: \\.(zip|rar|7z|tar|gz)$\n\n🔧 ADVANCED FILTERING OPTIONS:\n\n📏 SIZE-BASED FILTERING:\n- Add condition: {{ $json.size > 1048576 }} (> 1MB)\n- Small files only: {{ $json.size < 10240 }} (< 10KB)\n- Size range: {{ $json.size >= 1024 && $json.size <= 5242880 }}\n\n📅 DATE-BASED FILTERING:\n- Recent files: {{ $json.date > $now.minus({days: 7}) }}\n- Older files: {{ $json.date < $now.minus({months: 1}) }}\n- Specific date range: Use date comparisons\n\n📛 NAME PATTERN FILTERING:\n- Starts with: ^report_.*\n- Ends with: .*_backup$\n- Contains: .*important.*\n- Exclude pattern: ^(?!temp_).*\n\n⚠️ FILTER BYPASS:\n- Remove this node to transfer ALL files\n- Be cautious with unrestricted transfers\n- Consider disk space and bandwidth\n\n🎯 TESTING FILTERS:\n1. Use 'Execute Node' to test filter logic\n2. Check output to verify correct files selected\n3. Adjust regex patterns as needed\n4. Validate with different file types\n\n💡 PERFORMANCE TIP:\n- Specific filters reduce processing time\n- Avoid overly complex regex patterns\n- Test filters with representative data",
"position": [
736,
512
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "file-filter-condition",
"operator": {
"type": "string",
"operation": "regex"
},
"leftValue": "={{ $json.name }}",
"rightValue": "\\.(txt|csv|json|xml)$"
}
]
}
},
"typeVersion": 2
},
{
"id": "76837f02-91d3-47f9-aa45-4814c8fd32d1",
"name": "파일 다운로드",
"type": "n8n-nodes-base.ftp",
"notes": "FILE DOWNLOAD OPERATION:\n\n📥 DOWNLOAD CONFIGURATION:\n- Operation: 'Download File'\n- Binary Property: 'file_data' (stores file content)\n- Dynamic path: {{ $json.name }} (from previous node)\n- Uses same credentials as listing operation\n\n🎯 IMPORTANT SETTINGS:\n- Path Expression: {{ $json.name }}\n- Binary Data Property: file_data\n- Timeout: 300 seconds (5 minutes)\n- Auto-retry: 3 attempts on failure\n\n📊 PERFORMANCE CONSIDERATIONS:\n\n⏱️ TIMEOUT SETTINGS:\n- Small files (<10MB): Default timeout (60s)\n- Medium files (10MB-100MB): 300 seconds\n- Large files (>100MB): 600+ seconds\n- Adjust based on network speed\n\n🗂️ FILE SIZE LIMITS:\n- n8n default: 150MB per execution\n- Large files may cause memory issues\n- Consider file size filtering\n- Split large transfers into batches\n\n🔄 RETRY LOGIC:\n- Automatic retry on network errors\n- 3 attempts with exponential backoff\n- Preserves original file on failure\n- Error details logged for debugging\n\n💾 MEMORY MANAGEMENT:\n- Files stored in n8n temporary memory\n- Automatic cleanup after workflow completion\n- Monitor server RAM usage for large files\n- Consider streaming for very large files\n\n⚠️ ERROR SCENARIOS:\n- Network interruption: Auto-retry enabled\n- File permissions: Check source server access\n- File locked: Retry after delay\n- Disk space: Monitor n8n server storage\n- Timeout: Increase timeout for large files\n\n🔍 MONITORING:\n- Check execution logs for download times\n- Monitor network bandwidth usage\n- Track success/failure rates\n- Set up alerts for repeated failures\n\n🛠️ TROUBLESHOOTING:\n- Download fails: Check file permissions\n- Slow downloads: Verify network speed\n- Timeout errors: Increase timeout setting\n- Memory errors: Reduce batch size or file size limit\n\n📈 OUTPUT DATA:\n- Binary data stored in 'file_data' property\n- Original filename preserved\n- File metadata available for next nodes\n- Ready for upload to destination server",
"position": [
960,
512
],
"parameters": {
"path": "={{ $json.name }}",
"options": {},
"binaryPropertyName": "file_data"
},
"typeVersion": 1
},
{
"id": "cee66200-dd84-4a31-b00b-81935cff7e86",
"name": "대상에 업로드",
"type": "n8n-nodes-base.ftp",
"notes": "DESTINATION FTP UPLOAD:\n\n🎯 UPLOAD CONFIGURATION:\n- Operation: 'Upload File'\n- Source: Binary data from 'file_data' property\n- Dynamic destination path with filename preservation\n- Automatic directory creation enabled\n\n🔑 CREDENTIALS SETUP:\n1. Create separate FTP credential: 'Destination FTP Server'\n2. Verify write permissions on target server\n3. Test connectivity before production use\n4. Use different credentials than source for security\n\n📁 PATH STRUCTURE EXAMPLES:\n\n🗂️ PRESERVE ORIGINAL STRUCTURE:\n/destination/directory/{{ $json.name }}\n\n📅 DATE-BASED ORGANIZATION:\n/files/{{ $now.format('YYYY/MM/DD') }}/{{ $json.name }}\n\n📊 TYPE-BASED ORGANIZATION:\n/files/{{ $json.name.split('.').pop() }}/{{ $json.name }}\n\n👤 USER-BASED ORGANIZATION:\n/users/{{ $json.owner || 'system' }}/{{ $json.name }}\n\n⚙️ UPLOAD OPTIONS:\n\n✅ ENABLED FEATURES:\n- createDirectories: true (auto-create missing folders)\n- preserveTimestamp: true (maintain original dates)\n- overwriteExisting: false (prevent accidental overwrites)\n\n🔄 ADDITIONAL OPTIONS:\n- Resume broken uploads: true\n- Verify after upload: true\n- Atomic upload: true (temp file → rename)\n- Permission setting: 644 (read/write owner, read others)\n\n🛡️ SECURITY MEASURES:\n- Separate credentials for source/destination\n- Write-only permissions where possible\n- Regular credential rotation\n- Audit trail maintenance\n\n⚡ PERFORMANCE OPTIMIZATION:\n- Parallel uploads for multiple files\n- Compression for large text files\n- Resume capability for interrupted transfers\n- Bandwidth limiting for peak hours\n\n🎯 SUCCESS VALIDATION:\n- File existence check after upload\n- Size comparison (source vs destination)\n- Checksum verification (optional)\n- Timestamp preservation validation\n\n⚠️ ERROR SCENARIOS & SOLUTIONS:\n- Disk full: Monitor destination storage\n- Permission denied: Verify write access\n- Connection lost: Auto-retry with backoff\n- Filename conflicts: Use unique naming\n\n📊 MONITORING METRICS:\n- Upload speed (MB/s)\n- Success rate percentage\n- Average file size\n- Total data transferred\n- Error frequency and types\n\n🔧 TROUBLESHOOTING GUIDE:\n- Upload fails: Check destination permissions\n- Slow uploads: Verify network connectivity\n- Directory errors: Ensure path format is correct\n- Authentication issues: Validate credentials\n- File corruption: Enable checksum verification\n\n📈 OUTPUT INFORMATION:\n- Upload success status\n- Destination file path\n- Transfer duration\n- File size confirmation\n- Any warnings or errors",
"position": [
1184,
512
],
"parameters": {
"path": "/destination/directory/{{ $json.name }}",
"options": {},
"binaryPropertyName": "file_data"
},
"typeVersion": 1
},
{
"id": "df6e949f-839e-4ab5-80c8-243b16409720",
"name": "업로드 성공?",
"type": "n8n-nodes-base.filter",
"notes": "SUCCESS VALIDATION:\n\nCHECKS PERFORMED:\n- Upload operation success status\n- File transfer completion\n- No error conditions\n\nNEXT STEPS:\n- TRUE: Proceed to cleanup (delete source)\n- FALSE: Route to error handling\n\nADDITIONAL VALIDATIONS:\n- File size comparison\n- Checksum verification\n- Timestamp validation\n\nCONFIGURATION:\n- Adjust condition based on FTP node output\n- May need to check different properties\n- Test with actual transfer results",
"position": [
1408,
512
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "success-condition",
"operator": {
"type": "boolean",
"operation": "equal"
},
"leftValue": "={{ $json.success }}",
"rightValue": true
}
]
}
},
"typeVersion": 2
},
{
"id": "8e3a057f-f21c-4129-a43d-17960b58b26a",
"name": "원본 파일 삭제",
"type": "n8n-nodes-base.ftp",
"notes": "SOURCE FILE CLEANUP:\n\nOPERATION: DELETE\n- Removes file from source server\n- Only after successful upload\n- Prevents duplicate processing\n\nSAFETY MEASURES:\n- Only runs after upload verification\n- Maintains transfer logs\n- Consider backup retention period\n\nALTERNATIVE STRATEGIES:\n1. MOVE to 'processed' folder instead of delete\n2. RENAME with timestamp suffix\n3. ARCHIVE to compressed format\n\nRISK MITIGATION:\n- Test thoroughly before production\n- Implement rollback procedures\n- Monitor deletion operations\n\nIMPORTANT: Disable this step for testing!",
"position": [
1632,
512
],
"parameters": {
"path": "={{ $json.name }}",
"options": {}
},
"typeVersion": 1
},
{
"id": "4c15a875-60ab-462e-a780-1e50337f7ca3",
"name": "성공 로그 기록",
"type": "n8n-nodes-base.set",
"notes": "SUCCESS LOGGING:\n\nLOG FIELDS:\n- Timestamp: ISO format with timezone\n- Filename: Original file name\n- Status: SUCCESS indicator\n- File Size: In bytes for monitoring\n- Operation: Type of migration performed\n\nLOGGING ENHANCEMENTS:\n- Add source/destination server info\n- Include transfer duration\n- Record file checksums\n- Track user/process info\n\nOUTPUT OPTIONS:\n1. Database logging (add database node)\n2. File logging (append to CSV/JSON)\n3. External API (webhook notification)\n4. Email notifications\n\nMONITORING:\n- Use for operational dashboards\n- Generate migration reports\n- Track performance metrics",
"position": [
1856,
512
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "log-timestamp",
"name": "timestamp",
"type": "string",
"value": "={{ $now.format('YYYY-MM-DD HH:mm:ss') }}"
},
{
"id": "log-filename",
"name": "filename",
"type": "string",
"value": "={{ $json.name }}"
},
{
"id": "log-status",
"name": "status",
"type": "string",
"value": "SUCCESS"
},
{
"id": "log-filesize",
"name": "file_size_bytes",
"type": "number",
"value": "={{ $json.size }}"
},
{
"id": "log-operation",
"name": "operation",
"type": "string",
"value": "MIGRATE_AND_DELETE"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "18f4a55b-d5d5-4c44-8116-70614e4b01c6",
"name": "이메일 성공 알림 전송",
"type": "n8n-nodes-base.emailSend",
"notes": "EMAIL SUCCESS NOTIFICATION:\n\n📧 SUCCESS NOTIFICATION SETTINGS:\n- Sends confirmation email for successful transfers\n- Includes transfer details and file information\n- Uses same SMTP credentials as error notifications\n- Helps maintain audit trail of all operations\n\n✅ EMAIL CONTENT:\n- Timestamp of successful completion\n- Filename and size of transferred file\n- Operation type and status confirmation\n- Summary of all workflow steps completed\n\n📬 NOTIFICATION FREQUENCY:\n- One email per successful file transfer\n- Can be modified to send daily/weekly summaries\n- Consider batch notifications for high-volume transfers\n\n⚙️ CUSTOMIZATION OPTIONS:\n\n📊 SUMMARY REPORTS:\n- Change to HTML format for better presentation\n- Include charts or statistics\n- Add file thumbnails for images\n- Include transfer speed metrics\n\n📝 CONTENT MODIFICATIONS:\n- Add recipient-specific information\n- Include business context or next steps\n- Add links to file locations\n- Include compliance or audit information\n\n👥 RECIPIENT MANAGEMENT:\n- Multiple recipients with CC/BCC\n- Different notifications for different teams\n- Role-based notification content\n- Escalation for VIP files or large transfers\n\n🔕 NOTIFICATION CONTROL:\n- Add conditions to skip notifications for certain files\n- Time-based notification suppression (e.g., only during business hours)\n- File size thresholds for notifications\n- Success rate thresholds (only notify if multiple successes)\n\n📈 REPORTING INTEGRATION:\n- Can feed into business intelligence systems\n- Generate compliance reports\n- Track SLA compliance\n- Monitor operational efficiency\n\nNOTE: For high-volume environments, consider implementing batch notifications to avoid email flooding",
"position": [
2080,
512
],
"webhookId": "aef3fd9a-2a48-4e76-9900-5a48015a67cf",
"parameters": {
"options": {
"allowUnauthorizedCerts": false
},
"subject": "✅ FTP Migration Success - {{ $now.format('YYYY-MM-DD HH:mm') }}",
"toEmail": "admin@yourcompany.com",
"fromEmail": "noreply@yourcompany.com"
},
"typeVersion": 2.1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "ff89656f-95ee-4c16-a998-16763e6a5b23",
"connections": {
"4c15a875-60ab-462e-a780-1e50337f7ca3": {
"main": [
[
{
"node": "18f4a55b-d5d5-4c44-8116-70614e4b01c6",
"type": "main",
"index": 0
}
]
]
},
"0915fba4-e8a7-4070-bfe6-03d594163495": {
"main": [
[
{
"node": "76837f02-91d3-47f9-aa45-4814c8fd32d1",
"type": "main",
"index": 0
}
]
]
},
"76837f02-91d3-47f9-aa45-4814c8fd32d1": {
"main": [
[
{
"node": "cee66200-dd84-4a31-b00b-81935cff7e86",
"type": "main",
"index": 0
}
]
]
},
"df6e949f-839e-4ab5-80c8-243b16409720": {
"main": [
[
{
"node": "8e3a057f-f21c-4129-a43d-17960b58b26a",
"type": "main",
"index": 0
}
]
]
},
"8e3a057f-f21c-4129-a43d-17960b58b26a": {
"main": [
[
{
"node": "4c15a875-60ab-462e-a780-1e50337f7ca3",
"type": "main",
"index": 0
}
]
]
},
"fd89ccc8-f083-4241-a869-dca7690bc591": {
"main": [
[
{
"node": "0be802db-9255-45b5-8c93-ca85087969e5",
"type": "main",
"index": 0
}
]
]
},
"cee66200-dd84-4a31-b00b-81935cff7e86": {
"main": [
[
{
"node": "df6e949f-839e-4ab5-80c8-243b16409720",
"type": "main",
"index": 0
}
]
]
},
"0be802db-9255-45b5-8c93-ca85087969e5": {
"main": [
[
{
"node": "0915fba4-e8a7-4070-bfe6-03d594163495",
"type": "main",
"index": 0
}
]
]
},
"18f4a55b-d5d5-4c44-8116-70614e4b01c6": {
"main": [
[]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 파일 관리, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
자동화 Google Drive에서 FTP 파일 전송 및 JSON 로깅 및 리포트
자동 Google Drive에서 FTP 파일 전송与 JSON 로깅 및 보고
If
Ftp
Code
+
If
Ftp
Code
15 노드Dariusz Koryto
파일 관리
Reddit 밈을 Google Drive에 자동 다운로드, 중복 감지 및 Telegram 알림 포함
Reddit 밈 Google Drive 자동 다운로드, 중복 감지 및 Telegram 알림 포함
If
Set
Code
+
If
Set
Code
20 노드Vitorio Magalhães
파일 관리
NASA 매일 천문 사진
매일 NASA 천문도를 이메일로 받은 편지함으로 보내기
Set
Filter
Email Send
+
Set
Filter
Email Send
11 노드sienna
개인 생산성
18. HeyGen, GPT-4 및 가상 인물을 기반으로 한 YouTube 비디오 종합적인 자동화
사용HeyGen、GPT-4및虚拟形象视频实现YouTube视频端로端자동화
Set
Code
Sort
+
Set
Code
Sort
33 노드Amjid Ali
콘텐츠 제작
오래된 WordPress 글 자동 아카이빙至초안 상태
오래된 WordPress 게시물 초안 상태로 자동 아카이빙
If
Email Send
Wordpress
+
If
Email Send
Wordpress
7 노드David Olusola
파일 관리
콘텐츠생성기 v3
AI驱动블로그자동화:사용GPT-4생성并게시SEO기사至WordPress및Twitter
If
Set
Code
+
If
Set
Code
144 노드Jay Emp0
콘텐츠 제작