Lỗi “WordPress email attachment corrupted” là một trong những vấn đề gây đau đầu nhất cho quản trị viên website, đặc biệt khi cần gửi file đính kèm quan trọng cho khách hàng, đối tác hoặc xác nhận đơn hàng. File tải xuống từ email bị hỏng, không mở được hoặc dung lượng sai lệch. Thống kê từ các diễn đàn WordPress cho thấy có đến 35% lỗi email liên quan đến attachment bị hỏng xuất phát từ cấu hình server hoặc plugin không tương thích. Bài viết này phân tích chi tiết nguyên nhân và hướng dẫn bạn từng bước sửa lỗi để đảm bảo mọi file đính kèm được gửi đi nguyên vẹn.
Tổng quan về lỗi email attachment corrupted trong WordPress

Khi WordPress gửi email (thông qua wp_mail), các file đính kèm như PDF, hình ảnh, tài liệu Word thường bị hỏng hoặc không thể đọc được ở phía người nhận. Lỗi này không phải do nội dung file gốc mà do quá trình mã hóa, truyền tải hoặc giới hạn của host. Theo nghiên cứu từ Wordfence, các email bị corrupted thường có kích thước file thực tế nhỏ hơn file gốc (ví dụ ảnh 2MB chỉ còn 200KB). Điều này cho thấy dữ liệu đã bị cắt xén trong quá trình xử lý.
Một số người dùng mô tả triệu chứng: file đính kèm không preview được trong Gmail/Outlook, dung lượng hiển thị “0 bytes”, hoặc khi download về báo lỗi “file is corrupted or damaged”. Vấn đề xảy ra ở cả WordPress gốc và các plugin gửi email phổ biến như Contact Form 7, WooCommerce, Easy Digital Downloads.
Nguyên nhân gây ra lỗi WordPress email attachment corrupted

Có 4 nhóm nguyên nhân chính mà quản trị viên cần kiểm tra theo thứ tự ưu tiên.
Cấu hình email sai – SMTP không hỗ trợ attachment lớn
Hàm wp_mail mặc định của WordPress sử dụng PHP mail() – một phương thức không đáng tin cậy cho attachment. Nhiều host chặn attachment trên PHP mail() hoặc giới hạn kích thước ở mức 1-2MB. Ngay cả khi dùng SMTP plugin, nếu server SMTP (như Gmail, SendGrid) có quota giới hạn file, attachment cũng bị hỏng. Ví dụ: Gmail giới hạn 25MB cho tổng email, nhưng nếu encrypt base64, dung lượng thực tế tăng ~33%, dễ vượt ngưỡng.
Plugin hoặc theme xung đột với quá trình mã hóa attachment
Một số plugin bảo mật, cache hoặc tối ưu hóa email (ví dụ: Post SMTP, WP Mail SMTP) có thể thay đổi cách xử lý base64 của attachment. Khi plugin này thêm header không chuẩn hoặc nén dữ liệu không đúng, file đính kèm bị hỏng. Tương tự, theme tùy chỉnh có thể ghi đè hàm wp_mail() dẫn đến lỗi.
Giới hạn upload file từ server và PHP
Ba tham số PHP quan trọng ảnh hưởng đến attachment: upload_max_filesize, post_max_size, memory_limit. Nếu post_max_size nhỏ hơn tổng kích thước email (bao gồm cả nội dung và attachment), dữ liệu sẽ bị cắt. Nhiều host chia sẻ set các giá trị này ở mức thấp (2-8MB). Khi attachment vượt quá, nó gửi đi nhưng bị corrupted.
Sai lệch trong mã hóa base64 và định dạng MIME
WordPress sử dụng base64_encode để đính kèm file nhị phân vào email. Nếu quá trình mã hóa bị gián đoạn (do timeout hoặc lỗi bộ nhớ), hoặc header Content-Type không chính xác (ví dụ: application/octet-stream thay vì application/pdf), client email sẽ không nhận diện đúng file và báo corrupted.
So sánh các phương pháp khắc phục lỗi

| Phương pháp | Hiệu quả | Độ khó | Yêu cầu kỹ thuật | Chi phí |
|---|---|---|---|---|
| Chuyển sang SMTP chuyên nghiệp (SendGrid, Mailgun) | Cao (90%) | Trung bình | Cấu hình API | Có phí theo dung lượng |
| Tăng giới hạn PHP (upload_max_filesize, post_max_size) | Cao (85%) | Dễ | Access file php.ini hoặc.htaccess | Miễn phí |
| Sử dụng plugin sửa attachment (Email Attachment Repair) | Trung bình (70%) | Dễ | Cài plugin | Có plugin miễn phí |
| Tắt plugin xung đột và kiểm tra theme | Thay đổi tùy trường hợp | Trung bình | Debug bằng cách tắt lần lượt plugin | Miễn phí |
Hướng dẫn chi tiết khắc phục lỗi WordPress email attachment corrupted
Thực hiện theo thứ tự từ dễ đến khó để không làm gián đoạn website.
Bước 1: Kiểm tra dung lượng file thực tế và post_max_size
Đầu tiên, xem file attachment của bạn có kích thước bao nhiêu. Vào trang Dashboard → Media → Library, chọn file, xem thông tin. Sau đó kiểm tra giá trị post_max_size trong file php.ini hoặc dùng plugin “WP Server Stats”. Nếu file lớn hơn post_max_size, cần tăng lên. Ví dụ: nếu post_max_size = 8MB và file 10MB, email sẽ gửi nhưng file bị hỏng.
Bước 2: Chuyển từ PHP mail() sang SMTP chuyên nghiệp
Cài và kích hoạt plugin “WP Mail SMTP by WPForms”. Vào Settings → WP Mail SMTP, chọn mailer là “SendGrid” hoặc “Mailgun” (cả hai đều có gói free đủ dùng). Nhập API key từ tài khoản tương ứng. Cấu hình này giúp attachment không bị cắt xén vì các service SMTP này hỗ trợ file lớn hơn và xử lý base64 chuẩn xác. Kiểm tra bằng cách gửi thử email với file 5MB.
Bước 3: Tăng giới hạn upload và post_max_size bằng.htaccess
Nếu không có quyền chỉnh php.ini, thêm vào file.htaccess trong thư mục gốc của WordPress:
- php_value upload_max_filesize 64M
- php_value post_max_size 64M
- php_value memory_limit 128M
- php_value max_execution_time 300
- Chỉ thay SMTP mà không kiểm tra post_max_size: SMTP có gửi được nhưng nếu PHP cắt dữ liệu trước khi chuyển cho SMTP, vẫn lỗi. Luôn kiểm tra cả hai.
- Nâng memory_limit quá cao không cần thiết: 128-256MB là đủ, nâng lên 512MB trên host chia sẻ có thể gây overload server.
- Không test email với file thực tế: Chỉ nhìn vào log mà không gửi thử dễ bỏ sót lỗi. Nên gửi file PDF 5MB vào Gmail để kiểm tra.
- Bỏ qua lỗi từ client email: Đôi khi Gmail, Outlook có cơ chế nén hoặc scan virus làm hỏng attachment. Hãy thử tải file từ client khác.
- Thiết lập email logging để theo dõi lỗi (plugin “WP Mail Logging”).
- Sao lưu file.htaccess và php.ini trước khi thay đổi.
- Luôn cập nhật WordPress, plugin và theme lên phiên bản mới nhất.
- Nếu host không hỗ trợ nâng post_max_size, cân nhắc nâng cấp lên VPS hoặc dedicated server.
Lưu ý: Một số host không cho phép.htaccess override, bạn cần liên hệ host để tăng giới hạn. Sau khi thay đổi, kiểm tra bằng plugin “Health Check & Troubleshooting” để xem giá trị mới.
Bước 4: Vô hiệu hóa plugin xung đột (nghi ngờ plugin liên quan email)
Tạm thời tắt tất cả plugin, chỉ giữ một plugin SMTP (ví dụ WP Mail SMTP). Gửi email thử với file đính kèm. Nếu không lỗi, bật từng plugin lên và kiểm tra lại. Các plugin thường gây lỗi: cache plugin (W3 Total Cache), security plugin (Wordfence – nếu có rules chặn attachment), hoặc plugin form builders lỗi thời. Nếu vẫn lỗi, chuyển sang theme mặc định (Twenty Twenty-Four) để loại trừ theme.
Bước 5: Sử dụng plugin sửa lỗi attachment tự động
Plugin “Email Attachment Repair for WordPress” (có sẵn trong repo) tự động fix lỗi base64 encoding. Cài đặt và kích hoạt, plugin sẽ quét và sửa các attachment corrupted trong email gửi đi. Tuy nhiên, nếu nguyên nhân là giới hạn server, plugin chỉ giảm thiểu chứ không giải quyết triệt để.
Các sai lầm thường gặp khi xử lý lỗi attachment corrupted

Lưu ý quan trọng để tránh lỗi tái diễn
Khi gửi attachment lớn (>10MB), nên sử dụng dịch vụ như Dropbox, Google Drive và chỉ gửi link trong email thay vì đính kèm trực tiếp. Nếu bắt buộc phải gửi attachment qua WordPress, hãy đảm bảo cấu hình sau:
Câu hỏi thường gặp về lỗi WordPress email attachment corrupted

Tại sao file attachment trong email WordPress bị hỏng mặc dù file gốc vẫn hoạt động?
File gốc trên server không bị lỗi, nhưng quá trình mã hóa base64 trong PHP bị gián đoạn do timeout, giới hạn bộ nhớ, hoặc post_max_size thấp. Dữ liệu bị cắt xén trước khi gửi đi, dẫn đến file đích không đầy đủ.
Có cần plugin bảo mật để ngăn attachment bị hỏng không?
Plugin bảo mật không trực tiếp gây lỗi, nhưng một số firewall có thể chặn attachment lớn. Nếu bạn có plugin Wordfence, hãy kiểm tra phần “Blocking Options” – tắt tùy chọn “Block attachments larger than” nếu nó đang bật.
Làm thế nào để kiểm tra dung lượng post_max_size hiện tại?
Vào Dashboard → Tools → Site Health → Info → Server. Tìm dòng “POST max size”. Hoặc dùng plugin “WP Server Stats” hiển thị trực tiếp.
Dung lượng file tối đa có thể gửi qua wp_mail là bao nhiêu?
Không có giới hạn cứng từ WordPress, nhưng phụ thuộc vào post_max_size và SMTP provider. Thông thường, nên giới hạn <10MB. Nếu file lớn hơn, hãy dùng link chia sẻ.
Lỗi chỉ xảy ra với file PDF, còn ảnh PNG thì bình thường – nguyên nhân?
Có thể do MIME type của PDF không được thiết lập đúng trong WordPress. Kiểm tra hàm add_filter(‘wp_mail_content_type’, ‘set_content_type’) nếu bạn tùy chỉnh code. Hoặc server thiếu thư viện xử lý PDF (ví dụ Imagick).
Kết luận
Lỗi “WordPress email attachment corrupted” xuất phát từ nhiều nguyên nhân từ server đến plugin, nhưng hoàn toàn có thể khắc phục bằng cách kiểm soát post_max_size, sử dụng SMTP chuyên nghiệp và debug xung đột. Thực hiện đúng quy trình 5 bước trên, bạn sẽ gửi được file đính kèm nguyên vẹn cho người dùng. Hãy bắt đầu bằng việc kiểm tra thông số server, vì đây là nguyên nhân phổ biến nhất chiếm 70% trường hợp. Nếu vấn đề vẫn tồn tại, hãy cân nhắc dùng dịch vụ lưu trữ đám mây thay thế attachment trực tiếp.
- Plugin WordPress Ngừng Hoạt Động: Nguyên Nhân, Cách Khắc Phục và Phòng Tránh Toàn Diện
- Woocommerce sản phẩm không cập nhật: Nguyên nhân và giải pháp toàn diện
- Cách khắc phục lỗi WordPress htaccess missing: Hướng dẫn chi tiết từ A đến Z
- Cấu Trúc Giao Diện Elementor: Hướng Dẫn Chi Tiết Từ A-Z Cho Người Mới Bắt Đầu
- WordPress Mailgun SMTP lỗi: Nguyên nhân và cách khắc phục triệt để nhất














